Java Generics: Opis in metode
Jezik Java je od svoje ustanovitve doživel veliko sprememb, ki so nedvomno prinesle pozitivne lastnosti funkcionalnosti. Ena takšna pomembna sprememba je uvedba Java Generic ali generalizacija. Ta funkcija je omogočila, da je jezik ne le bolj prožen in vsestranski, ampak tudi veliko varnejši v smislu zmanjševanja podatkovnih tipov.
Vsebina
Dejstvo je, da se je pred uvedbo generikov generična koda v Java lahko ustvarila le s sklicevanjem na vrsto objekta. Take povezave je mogoče dodeliti kateremu koli predmetu. Navsezadnje so vsi razredi v Java implicitni potomci razreda Object. Vendar je ta pristop potencialni vir številnih varnostnih napak, če izrecno pretvorite predmet iz Objecta v ciljni tip. Ko se uporabijo generalizacije, se vsi odrezki izvajajo implicitno in samodejno, kar izključuje tudi možnost napak.
Java Generics: opis in primer
Vzemimo preprost primer uporabe sploščenja na običajen razred na sliki spodaj. In šele potem bomo podrobneje preučili vse tanke in nianse Jave Generic.
Obvestilo o razglasitvi razreda Pair. Takoj po imenu razreda se odprejo kotni oklepaji, v katerih je označena črka T. To je vrsta mesta, ki se bo pri ustvarjanju primerka tega razreda nadomestila s posebno vrsto. Izgleda takole: par
Opomba: začenši z osmo različico Java, ki določa ciljni tip, ko je povezava razglašena, lahko kotne oklepe pustite v konstruktorju prazne. Tako lahko zgornji primer ponovimo na naslednji način: Pair
Ko je razred razglašen na ta način, lahko v tem telesu namesto določenih vrst polj, referenc in metod, ki jih vrnete z metodami, lahko uporabite to pismo. Ker se T pri določanju tipa objekta zamenja s specifičnim tipom, bo prvo in drugo polje v tem primeru vrste Integer.
Po logiki argumentov in firstItem secondItem iz ustrezni konstruktor mora biti tipa Integer ali podrazred. Če poskušate prenesti vrsto podatkov, ki se razlikuje od tistega, ki je bil določen pri ustvarjanju predmeta, prevajalnik ne bo preskočil te napake. Torej, konstruktor z argumenti pri ustvarjanju predmeta bo imel naslednjo obliko: Pair
Splošni razred z več tipi parametrov
V generičnih razredih lahko izberete tudi več tipov parametrov, ki so podani v kotnih oklepajih, ločenih z vejicami. Razred Pair za ta primer je predstavljen na spodnji sliki.
Kot lahko vidite, pri ustvarjanju primerka takega razreda v kotnih oklepajih je treba navesti enako število vrst, kot so parametri. Če poznate takšno vrsto podatkovne strukture, kot je zemljevid, potem boste morda opazili, da se tam uporablja isto načelo. Tam prvi argument določa vrsto ključa, in drugo - vrsto vrednosti. Treba je opozoriti, da so lahko vrste argumentov, ki so bili posredovani ustvarjanju predmeta, enaki. Torej je naslednja izjava primera razreda Pair povsem pravilna: Pair obj.
Nekatere značilnosti posplošitev
Preden nadaljujete, je treba opozoriti, da prevajalnik Java ne ustvari nobene druge različice razreda Pair. Dejansko se v procesu zbiranja izbrišejo vse informacije o generičnem tipu. Namesto tega se oddajo ustrezne vrste, ki ustvarjajo posebno različico razreda Pair. Vendar pa sama program še vedno vsebuje eno posplošeno različico tega razreda. Ta postopek imenujemo čiščenje tipa Java Generic.
Naj poudarimo pomembno točko. Sklicevanje na različne različice istega java generičnega razreda ne more usmeriti na isti predmet. Recimo, da imamo dve povezavi: Pair
Omejitve, naložene splošnim razredom
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. Taki preprosti tipi, kot so na primer dvojni ali dolgi, ni mogoče prenesti. Z drugimi besedami, naslednja vrstica izjave razreda Par ni veljavna: Pair
Druga resna omejitev je nezmožnost ustvarjanja primerka tipa tipa. Torej, naslednja vrstica bo povzročila napako pri sestavljanju: T first = new T (). To je očitno, ker vnaprej ne veste, ali bo kot argument predstavljen celoten razred ali abstraktni vmesnik. Enako velja za ustvarjanje nizov.
Omejene vrste
Pogosto se pojavljajo razmere, ko je treba omejiti seznam vrst, ki jih je mogoče prenesti kot argument za splošni razred java. Predpostavimo, da v našem paru želimo vključiti izključno numerične vrednosti za nadaljnje matematične operacije na njih. Za to moramo nastaviti zgornjo mejo parametra tipa. To se izvaja z uporabo deklaracije superklasa, podedovane z vsemi argumenti, ki se prenesejo v kotne oklepe. To bo videti tako: razred Pair
To je običajna tehnika. Take omejitve se pogosto uporabljajo za zagotovitev združljivosti parametrov tipa v istem razredu. Razmislite o primeru v našem paru: razred Pair. Tukaj povemo prevajalcu, da je tip T lahko poljuben, tip V pa mora biti bodisi tip T ali eden od njegovih podrazredov.
Omejitev "od spodaj" se zgodi na popolnoma enak način, toda namesto besede se razširi beseda super. To je razred Pair
Splošne metode in konstruktorji Java
V Javi lahko generalizacije uporabimo ne samo glede na razrede, temveč tudi metode. Torej, generalizirano metodo lahko razglasi v običajnem razredu.
Kot je prikazano na zgornji sliki, v deklaraciji splošne metode ni nič zapletena. Doseganje kotnih oklepajev je dovolj veliko, preden se vrne vrsta metode, in v njih določite parametre tipov.
V primeru konstruktorja se vse naredi na enak način:
Kotni oklepaji so v tem primeru nameščeni pred imenom konstruktorja, ker ne vrne nobene vrednosti. Rezultat dela obeh programov bo:
Integer
String
- Kako namestiti Java v operacijskem sistemu Windows 7
- Kako posodobiti Java v operacijskih sistemih Linux in Windows?
- Prvi Java program je Hello World
- Java programski jezik
- Kako in zakaj moram namestiti Java v svoj računalnik?
- Družina motornih koles `Java-350`
- `Java 350-638` - sanje sovjetskih motoristov
- Cigarete `Java`: opis in vrste
- Java nizi nizov. Razvrščanje matrike v Java. Dvodimenzionalna Java matrika
- Java: regularni izrazi, posebni znaki
- Programiranje: Java. Vrste podatkov
- Format JAR: kaj naj odprete v računalniku ali v telefonu
- Java ni nameščen: kaj naj storim? Kako namestiti na Ubuntu?
- Java: InputStream. Vhodni tokovi
- BigInteger Java: delo z velikimi številkami
- Java Array. Nizi v Java. Java za začetnike
- Iz pomnilnika Minecraft: kaj storiti in kako se znebiti te napake
- Элементы объектной модели Java: абстрактный класс, интерфейс
- Kako omogočiti Java v Firefoxu za težave z zaklepanjem
- Kako odstraniti java iz računalnika? To je enostavno!
- Kako napisati v datoteko v Java