Počítače, Programování
Java Generics: popis a metody
Počínaje vzhledu jazyka Java prošla mnoha změnami, které nepochybně přinesl pozitivní okamžiky v jeho funkčnost. Jeden z těchto významných změn je zavedení Java generické či zobecnění. Tato funkce nejen dělat jazyk více flexibilní a univerzální, ale také mnohem bezpečnější, pokud jde o uvedení datové typy.
Faktem je, že před zavedením generik v Javě generického kódu by mohly být vytvořeny, a to nejen pokud jde o referenční typ objektu. Tyto odkazy lze přiřadit libovolný objekt. Koneckonců, tříd v Javě jsou implicitní třídy Object dědici. Nicméně, tento přístup je potenciálním zdrojem mnoha chyb souvisejících s typy cenných papírů v zdánlivé přeměny objektu z objektu do cílového typu. Při použití zobecnění všechny hody se provádějí implicitně a automaticky, což eliminuje i potenciál pro chyby.
Java Generics: popis a příklad
Uvažme jednoduchý příklad uplatnění generalizace do běžných tříd na obrázku níže. A pak pokračovat do podrobného zkoumání všech nuance a nuance Java Generic.
Věnovat pozornost tomu, jakým způsobem prohlášení třída dochází Pair. Bezprostředně po názvem třídy, otevřené lomené závorky, které je uvedeno písmeno T. Jedná se o druh plniva, který je v procesu vytváření instance této třídy bude nahrazen určitého typu. Vypadá to takto: Dvojice
Poznámka: počínaje osmou verzi Javy, stanovení cílové typ při deklarování reference úhelníky v konstruktoru může zůstat prázdná. Tak například může být přepsána jak je uvedeno výše: Dvojice
Je-li třída deklarován takovým způsobem, pak v jeho těle namísto specifických typů polí, odkazy objektů vrácených podle metod, které můžete použít ten dopis. Vzhledem k tomu, T při vytváření objekt třídy je nahrazen určitého typu, první a druhé pole v tomto případě být typu celé číslo.
Podle logiky argumentů a firstItem secondItem, postoupeny příslušnému konstruktoru musí být typu Integer nebo podtřídy. Pokusíte-li se vysílat datový typ, který je odlišný od toho, co bylo určeno při vytváření objektu, kompilátor nenechá tuto chybu. To znamená, že argumenty konstruktor když objekt bude následující: Pár
Zobecněný s několika parametry typů tříd
Zevšeobecňujícími tříd mohou také deklarovat více parametry typu, které jsou stanoveny v hranatých závorkách s čárkou. Přebudovaný případě class Pair je uveden níže.
Jak vidíte, při vytvoření instance této třídy v hranatých závorkách by mělo být uvedeno stejný počet typů jako parametry. Pokud jste obeznámeni s tímto typem datové struktury jako mapa, můžete vidět, že používá naprosto stejný princip. Tam je první argument určuje typ klíče, a druhá - typ hodnoty. Je třeba poznamenat, že typy přenášena když objekt argumenty se mohou překrývat. Například následující reklama Pair třída instance je naprosto správné: Dvojice
Některé funkce zobecnění
Než jít dál, je třeba poznamenat, že Java kompilátor nevytváří různé verze třídy Pair. Ve skutečnosti, v procesu sestavování zobecněné Typ Všechny informace se zrušuje. Místo toho, aby příslušné typy a vytváří speciální verzi třídy Pair. Nicméně, v programu je stále jen generická verze třídy. Tento proces se nazývá Java typu Generic čištění.
Poznámka důležitý bod. Odkazy na různé verze stejné java generické třídy nemůže upozornit na jeden a tentýž objekt. To znamená, že bychom mít dva odkazy: Pár
Omezení týkající se generických tříd
Je důležité vědět, že zobecnění lze aplikovat pouze na referenční typy, které je předat parametry generických tříd java argument musí být typu třídy. Tyto jednoduché typy, jako jsou, např., Dvojité nebo dlouhé, nemohou být převedeny. Jinými slovy, tento řádek deklarace třídy Pair není dovoleno: Pár
Dalším závažným omezením je nemožnost vytvoření instance typ parametru. Například následující řádek způsobí chybu kompilace: T první = new T (). To je zřejmé, protože nevíte předem, zda argument prošel kompletní třídu nebo abstraktní, nebo dokonce rozhraní. To samé platí i pro vytvoření pole.
omezené typy
Docela často existují situace, kdy je nutné omezit seznam druhů, které mohou být předány jako argument pro Java generickou třídu. Dejme tomu, že jsme v naší třídě Pár chtít zapouzdřit pouze číselné hodnoty pro další matematické operace na nich. K tomu je třeba definovat horní hranici typ parametru. To je realizováno pomocí nadřazené reklamy zdědily všechny argumenty předané do lomených závorek. Bude vypadat takto: class Pair
Jedná se o běžný příjem. Tato omezení jsou často používány pro poskytování parametrů typu kompatibilita v jedné a téže třídy. Vezměme si za příklad v naší třídě Pair: class Pair
Omezením „zdola“ je přesně stejným způsobem, ale místo slova rozšiřuje, aby bylo patrné slovo Super. Která je klasifikována třídou Pair
Generické metody Java a konstruktérů
V Javě, zobecnění lze aplikovat nejen na úrovni tříd, ale i metody. Například obecný způsob může být zaneseny do běžné třídy.
Jak je vidět na obrázku výše, tento způsob reklamy generalizované není žádný velký problém. Dost před návratový typ metody dát úhelníků a zadat parametry typu v nich.
Pokud je vše provedeno podobně jako konstruktoru:
Úhelníky v tomto případě předložen jménu tvůrce, protože nemá žádnou návratovou hodnotu. Výsledkem obou programů bude:
celé číslo
provázek
Similar articles
Trending Now