RačunalnikiProgramiranje

Java Generics: opis in metode

Začenši s pojavom jezika Java je doživela veliko sprememb, ki nedvomno prinaša pozitivne trenutke v svoji funkcionalnosti. Ena izmed teh pomembnih sprememb je uvedba Java Generic ali posploševanj. Ta funkcionalnost le, da ni jezik bolj prilagodljiv in vsestranski, vendar tudi veliko varnejši, ker prinašajo vrste podatkov.

Dejstvo je, da je mogoče ustvariti pred uvedbo generičnih zdravil v Java generično kodo, ne samo v smislu referenčni tip Object. Takšne povezave se lahko dodeli nobenega predmeta. Konec koncev, razredi v Java so implicitne dediči Predmet razreda. Vendar pa je ta pristop je potencialni vir številnih napak v zvezi z vrstami varnosti v navidezni pretvorbo predmeta iz predmeta na vrsto ciljno. Pri uporabi posplošitve so vsi odlitki izvede implicitno in samodejno odpravi tudi možnosti za napake.

Java Generics: opis in primer

Vzemimo preprost primer uporabe generalizacije rednih razredov v spodnji sliki. In potem nadaljuje s podrobnim pregledom vseh razlik in nianse Java Generic.

Bodite pozorni na način, na katerega pride izjava razred par. Takoj po imenu razreda, odprte kotne nosilci, ki so pokazale črke T. To je neke vrste polnilo, ki je v procesu oblikovanja primerek tega razreda se nadomesti z določeno vrsto. Videti je, kot sledi: Par obj = novi par (). Opozoriti je treba, da se namesto T lahko določite vsako pismo, vendar pa, kot pravilo je, T, V ali E.

Opomba: začenši z osmo različico Java, ki določa vrsto ciljno pri deklariranju referenčna kotne oklepaje v konstruktorja lahko pustite prazna. Tako se na primer lahko izrazi kot zgoraj: par obj = new Par <> ().

Ko je razred razglašena na tak način, potem v njegovem telesu, namesto posebne vrste področij, povezave, predmetov, z metodami, ki jih lahko uporabite, da je pismo vrnjeno. Ker T pri ustvarjanju razred predmeta nadomesti z določeno vrsto, prva in druga polja v tem primeru bo od tipa celo število.

Po logiki argumentov in firstItem secondItem iz ustrezni konstruktor mora biti tipa Integer ali podrazred. Če boste poskušali posredovati vrsto podatkov, ki se razlikuje od tistega, kar je bilo določeno pri ustvarjanju predmeta, prevajalnik ne bo pustil to napako. Tako trditve graditelj ko bo objekt, kot sledi: par obj = new Par <> (novo Celo število (1), novo Integer (2)). Enako velja za trditev in metod setFirst setSecond. In kot ste verjetno že uganili, metode getFirst getSecond in se vrne vrednost tipa Integer.

Posplošena z več parametri vrste razreda

V splošnimi razredih lahko tudi razglasi več parametrov tipa, ki so določeni v kotnih oklepajih z vejico. Preoblikoval primeru Par razred je predstavljen spodaj.

Kot lahko vidite, ko ustvarite primerek tega razreda v kotnih oklepajih se navede enako število vrst kot parametrov. Če ste seznanjeni s to vrsto podatkovne strukture kot karto, lahko vidite, da uporablja povsem enak princip. Tam, prvi argument določa vrsto ključa, in drugi - vrsto vrednosti. Treba je opozoriti, da so vrste posredujejo, kadar lahko an argumenti predmet prekrivajo. Na primer, par razreda primer naslednji oglas je popolnoma pravilna: Par obj.

Nekatere funkcije posplošitve

Preden gredo še dlje, je treba opozoriti, da je Java prevajalnik ne ustvarja različic par razreda. V resnici, v procesu sestavljanja vse informacije posplošenega tipa se črta. Namesto tega bi ustrezne vrste, ki ustvarja posebno različico razreda parom. Vendar, v programu pa je še vedno le generična različica razreda. Ta proces se imenuje Java tip Generic čiščenje.

Opomba pomembno točko. Povezave do več različic istega java generičnega razreda ne morejo navesti enega in istega predmeta. To pomeni, da imamo dve povezavi: Seznanjanje obj1 in par obj2. Zato je v skladu obj1 = obj2 je prišlo do napake. Čeprav sta spremenljivki tipa Par , predmeti, na katere se nanašajo, so različne. To je odličen primer vrste varnosti v Java Generic.

Omejitve generičnih razredov

Pomembno je vedeti, da se posplošitve lahko uporablja le za referenčno vrste, ki je, da prenese parametre generični razred java trditev, mora biti vrsta razred. Te enostavne vrste, kot so, na primer, dvojne ali dolge, ni mogoče prenesti. Z drugimi besedami, je naslednja vrstica izjavo razred Par ni dovoljeno: Par obj. Vendar pa je ta omejitev ni resen problem, saj je ustrezen Java ovoj razred za vsako primitivno vrsto. Strogo gledano, če je par razred želite zajame celo število in logična vrednost avtoupakovka stori vse, kar je za vas: Par obj = new Par <> (25, resnično).

Druga resna omejitev je nezmožnost ustvariti primerek tipa parametrov. Na primer, naslednja vrstica povzroči napako pri prevajanju: T prvi = new T (). To je očitno, ker ne ve vnaprej, ali je argument opravili celoten razred ali abstraktno, ali celo vmesnik. Enako velja za ustvarjanje nizi.

omejene vrste

Pogosto obstajajo situacije, ko je potrebno omejiti seznam vrst, ki se lahko prenesejo kot argument za Java generični razred. Vzemimo, da imamo v naši Pair razreda želijo zaobjeti le številčne vrednosti za nadaljnje matematičnih operacij na njih. Če želite to narediti moramo določiti zgornjo mejo vrsto parametrov. To je spoznal s pomočjo nadrazreda oglasov podedovali vse argumente opravili v kotnih oklepajih. To bo videti takole: razred Par . Na ta način, prevajalnik ugotovi, da namesto se parameter T lahko substituirana ali razred Število ali enega izmed njegovih podrazredov.

To je skupna recepcija. Takšne omejitve se pogosto uporabljajo za zagotavljanje parametrov tipa združljivost v enem in istem razredu. Vzemimo primer v našem razredu par: razred Par . Tu povemo prevajalniku, da lahko tipa T biti poljubna, in vrsta V mora biti bodisi tipa T ali eden od njegovih podrazredov.

Omejevanje "od spodaj", je na povsem enak način, vendar je namesto besede razširja črkovati besedo super. To se uvršča razred Par pravi, da se namesto T lahko nadomesti ali ArrayList ali kateri koli razred ali vmesnik, ki se deduje.

Generični metode Java in konstruktorji

V Java, lahko posplošitve se uporablja ne le za razrede, ampak tudi metode. Na primer, lahko generično metodo prijavljeni v rednem razredu.

Kot je razvidno na sliki zgoraj, je metoda oglas posplošena ni nič takega. Dovolj pred vrsto vrnitev metode postaviti kotni nosilci in določiti parametre tipa v njih.

Če je vse narejeno podobno kot konstruktorja:

Kotni nosilci v tem primeru dal pred imenom oblikovalca, ker nima vrne vrednost. Rezultat obeh programov bo:

Celo število

String

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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