ComputerZokuhlela

Java Generics: inkcazelo kunye neendlela

Ukuqala kunye imbonakalo ulwimi Java ithe oluninzi utshintsho, nto leyo ngokungathandabuzekiyo bezisa amathuba eyakhayo kusebenziso. Enye yezi nguqu okuphawulekayo Ukuqaliswa Java Generic okanye nentetho equkayo. Oku kusebenza kuphela ukwenza ulwimi bhetyebhetye ngakumbi yaye ubhetyebhetye, kodwa ikhuseleke kakhulu ngokubhekiselele ekuziseni iindidi zedata.

Inyaniso kukuba phambi kokuba kuqaliswe generics e Java ikhowudi generic okufumaniweyo, hayi kuphela ngokwemigaqo lohlobo reference Object. Amakhonkco ezinjalo linokukwenziwa nayiphi na into. Ngapha koko, iiklasi Java ziziindlalifa kodidi lwento lokukwekwa. Nangona kunjalo, le ndlela yeyona nobangela iimpazamo ezininzi ezinxulumene iintlobo zokhuseleko kwi ukuguquka elikhangeleka into Object ukuya uhlobo kujoliswe kulo. Xa usebenzisa nentetho equkayo, zonke abumbe yenziwa ngokupheleleyo kwaye ngokuzenzekelayo, ukuphelisa nkqu amandla iimpazamo.

Java Generics: inkcazelo kunye nomzekelo

Makhe sihlolisise umzekelo elula isicelo of gabalala class rhoqo kulo mzobo ungezantsi. Kwaye badlule uviwo eneenkcukacha zonke ubuqili kunye bokuqonda Java Generic.

Nikelani ingqalelo indlela apho isibhengezo iklasi kwenzeka Iperi. Ngoko nangoko emva kokuba igama leklasi, izibiyeli ezineekona ezivulekileyo, leyo nyikele T. unobumba It is a hlobo lokufaka, leyo inkqubo yokudala umzekelo we le iklasi uya kutshintshwa kuze kufakwe uhlobo oluthile. Kubonakala ngolu hlobo lulandelayo: Pair obj = Pair entsha (). Kufuneka kuqatshelwe ukuba endaweni T wokuqala ungakhankanya naluphi na unobumba, kodwa, njengoko umthetho, sebenzisa T, V okanye E.

Qaphela: aqala nge kwinguqulelo yesibhozo Java, ecacisa uhlobo ekujoliswe xa evakalisa reference izibiyeli ezineekona kwi umhlanganisi kungashiywa belambatha. Ngoko mzekelo zinakho kwakhona njengoko kuchaziwe apha ngasentla: Pair obj = Pair entsha <> ().

Xa eklasini ibhengeze ngendlela enjalo, ngoko emzimbeni wakhe endaweni iintlobo ezithile kwiinkalo, unxibelelwano, izinto babuyela ngeendlela ungasebenzisa loo leta. Ekubeni T xa kuyilwa into yeklasi endaweni uhlobo oluthile, amasimi yokuqala neyesibini kulo mzekelo kuya kuba luhlobo elipheleleyo.

Emva anengqondo kwiimpikiswano kunye firstItem secondItem, wabhekisela umhlanganisi efanelekileyo kufuneka ibe lohlobo elipheleleyo okanye subclass. Ukuba uzama nokudlulisela uhlobo data yahlukile koko ochaziweyo xa kudalwa into, le compiler akayi ke le mpazamo. Ngoko ke, lo kokwakha xa kuya kuba yinto ngolu hlobo lulandelayo: Pair obj = Pair entsha <> (elipheleleyo omtsha (1), elipheleleyo omtsha (2)). Kukwasebenza kwanjalo kuyo kwiimpikiswano kunye neendlela setFirst setSecond. Yaye njengoko sele mhlawumbi ugqibe, iindlela getFirst getSecond kwaye uya kubuya ixabiso lohlobo elipheleleyo.

Ngokubanzi kunye neentlobo iklasi eziliqela iparameters

Kwiiklasi ngokubanzi nabo banokuthi parameters ezininzi lohlobo ukuba zicwangciswa izibiyeli ezineekona nge isiphumlisi. Ngokutsha yi ityala iklasi Pair ithiwe thaca apha ngasezantsi.

Njengoko ubona, xa wenze i Umzekelo yale eklasini izibiyeli ezineekona kufuneka ubonise inani elifanayo iintlobo njenge parameters. Ukuba uqhelene olu hlobo nesakhiwo sedata njenge Map, ungabona ukuba isebenzisa kanye isimiso esifanayo. Apho, ingxoxo yokuqala sichaza uhlobo isitshixo, kwaye eyesibini - uhlobo ixabiso. Kufuneka kuqatshelwe ukuba iintlobo ezosulela xa kwiimpikiswano into kungenzeka. Hi xikombiso, le ad ilandelayo Pair udidi Umzekelo ichanekile kakhulu: Pair obj.

Ezinye iimpawu nentetho equkayo,

Ngaphambi kokuqhubeka, kufanele kuqatshelwe ukuba compiler Java akudali iinguqulelo ezahlukeneyo Iperi yeklasi. Enyanisweni, xa inkqubo yokuqulunqa uhlobo ngokubanzi zonke iinkcukacha icinyiwe. Endaweni yoko, ubangenise endlwini iintlobo ezifanelekileyo, ukudala inguqulelo ekhethekileyo kwiklasi Iperi. Noko ke, kule nkqubo kusekho uguqulelo kuphela generic kwiklasi. Le nkqubo ibizwa kwi Java uhlobo lokucoca Generic.

Qaphela ingongoma ebalulekileyo. Links ukuba iinguqulelo ezahlukileyo kwiklasi generic efanayo java ayikwazi alathe enye into efanayo. Oko kukuthi, masithi kufuneka amakhonkco amabini: Pair obj1 uze Iperi obj2. Ngenxa yoko, ngokuhambelana obj1 = obj2 imposiso. Nangona zombini izinto zi ludidi lwe Pair , izinto ukuba bayibiza leyo, zahluke. Lo ngumzekelo obalaseleyo neentlobo lokhuseleko Java Generic.

Uthintelo kwiiklasi generic

Kubalulekile ukwazi ukuba nentetho equkayo, zinokusetyenziswa kuphela ireferensi iintlobo, eliza parameters generic udidi java ingxabano kufuneka uhlobo eklasini. Ezi ntlobo ezilula, ezifana, umz, kabini okanye elide, azikwazi ukuba ukudluliselwa. Ngamanye amazwi, le layini ilandelayo iklasi isibhengezo Pair akuvumelekanga: Pair obj. Nangona kunjalo, lo umda ayikho ingxaki enkulu, njengoko kukho udidi Java ngumsongi angqinelanayo kuhlobo ngalunye kwakudala. Ngokwenene, ukuba Iperi iklasi ukuba ufuna ukudibanisa i elipheleleyo kunye Boolean ixabiso avtoupakovka wenza yonke into kuni: Pair obj = Pair entsha <> (25, oyinyaniso).

Enye kwesithintelo kakhulu kukungakwazi ukwenza umzekelo we uhlobo parameter. Hi xikombiso, le layini ilandelayo iya kubangela imposiso yokuhlanganisela: T yokuqala = T omtsha (). Oku Kucacile, ngokuba akuyazi kwangaphambili ukuba ingxabano wadlula iklasi ngokupheleleyo okanye abstract, okanye interface. Kukwanjalo uya ngokudala ma.

iintlobo ezithile

Lidla kukho iimeko xa kuyimfuneko ukunciphisa uluhlu lwendidi ukuba ukuhambisela njenge mpikiswano kwi Java ephunyeziweyo iklasi generic. Makhe sicinge ukuba Iperi eklasini yethu sifuna ukudibanisa kuphela amaxabiso lwamanani ukuba imisebenzi engaphezulu lwezibalo phezu kwabo. Ukuze wenze oku kufuneka ukuchaza nelona qondo liphezulu uhlobo parameter. It iqaphelwa esebenzisa iintengiso superclass ilifa zonke iingxoxo ipasiswe izibiyeli ezineekona. Kuya kukhangela ngolu hlobo lulandelayo: iklasi Pair . Ngale ndlela, le compiler ufumanisa ukuba endaweni ye parameter T singamiswa endaweni okanye udidi Inani okanye enye subclasses yayo.

Le wondamkela eqhelekileyo. izithintelo anjalo adla ngokusetyenziswa ukubonelela uhlobo ehambelanayo parameters kwenye kunye kwiklasi enye. Khawucinge ngomzekelo eklasini yethu Pair: iklasi Pair . Apha siye sixelele compiler ukuba uhlobo T kunokuba engenasizathu, kunye nohlobo V kufuneka ibe uhlobo T okanye enye subclasses yayo.

Ukucutha i "bottom" kanye ngendlela efanayo, kodwa endaweni ilizwi oluya ukupela super ilizwi. Ukuba iklasi ihlelwa Pair uthi endaweni T ubanjelwe okanye ArrayList, okanye naluphi na udidi okanye interface ukuba ifa.

iindlela Java Generic kunye abakhi

E Java, nentetho equkayo enokusetyenziswa nje kuphela iiklasi, kodwa iindlela. Umzekelo, indlela generic zingabhengezwa eklasini rhoqo.

Njengoko kubonakala kumzobo ngasentla, indlela ad nolahlo ngokubanzi akukho nto ibitheni ngotywala. Kwanele phambi uhlobo ukubuya indlela ukubeka kwizibiyeli engile ucacise uhlobo parameters kuzo.

Ukuba yonke into yenziwe ngokufanayo le Umakhi:

izibiyeli engela kulo mzekelo wabeka phambi igama lowo wengcibi yokuluka, ngokuba akukho Ixabiso lokubuya. Isiphumo zombini iinkqubo ziya kuba:

inani elipheleleyo

string

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 xh.delachieve.com. Theme powered by WordPress.