Generika jazyka Java: Popis a metody
Od svého vzniku jazyk Java prošel mnoha změnami, což nepochybně přineslo pozitivní vlastnosti jeho funkčnosti. Jednou takovou smysluplnou změnou je zavedení Java Generic nebo generalizace. Tato funkčnost způsobila, že jazyk je nejen flexibilnější a všestrannější, ale také mnohem bezpečnější, pokud jde o snížení datových typů.
Obsah
Faktem je, že před zavedením generik, generický kód v Javě by mohl být vytvořen pouze odkazem na typ objektu. Takové odkazy mohou být přiřazeny jakémukoli objektu. Koneckonců, všechny třídy v jazyce Java jsou implicitními potomky třídy Object. Tento přístup je však potenciálním zdrojem mnoha typů chyb zabezpečení, pokud explicitně převedete objekt z objektu na cílový typ. Při použití zobecnění se všechny casty provádějí implicitně a automaticky, což vylučuje i možnost výskytu chyb.
Generika jazyka Java: popis a příklad
Vezměme si jednoduchý příklad uplatnění zobecnění na obvyklou třídu na následujícím obrázku. A teprve poté přistoupíme k podrobnému zkoumání všech jemností a nuancí Java Generic.
Všimněte si, jak je deklarována třída Pair. Okamžitě za názvem třídy se otevře úhelník, ve kterém je označeno písmeno T. Je to druh zástupného symbolu, který bude při vytváření instance této třídy nahrazen určitým typem. Vypadá to takto: Pár
Poznámka: Počínaje ôsmou verzí jazyka Java, při zadání odkazu na cílový typ můžete ponechat úhelníky v konstruktoru prázdné. Takže výše uvedený příklad lze přepsat následovně: Pár
Když je tato třída deklarována tímto způsobem, pak v tomto těle můžete namísto konkrétních typů polí, odkazů a metod vrácených metodami použít tento dopis. Protože T je při vytváření objektu třídy nahrazen určitým typem, první a druhé pole v tomto případě budou typu Integer.
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. Takže konstruktor s argumenty při vytváření objektu bude mít následující podobu: Pár
Obecná třída s několika typovými parametry
V obecných třídách můžete také deklarovat několik typových parametrů, které jsou zadány v úhlových závorcích oddělených čárkami. Třída Pair pro tento případ je uvedena na obrázku níže.
Jak je vidět, při vytváření instance takové třídy v úhlových závorkách by měl být zadán stejný počet typů jako parametry. Pokud jste obeznámeni s takovou strukturou dat, jako je mapa, možná si všimnete, že se zde používá stejný princip. První klíč určuje typ klíče a druhý - typ hodnoty. Je třeba poznamenat, že typy argumentů předávaných vytvoření objektu mohou být stejné. Takže následující deklarace instance třídy Pair je naprosto správná: Pair obj.
Některé funkce zobecnění
Předtím, než postupujeme dále, je třeba poznamenat, že překladač jazyka Java nevytváří žádné jiné verze třídy Pair. Ve skutečnosti jsou během procesu kompilace odstraněny všechny informace o generickém typu. Namísto toho jsou obsazovány odpovídající typy, čímž vznikne speciální verze třídy Pair. Samotný program však má ještě jednu generalizovanou verzi této třídy. Tento proces je nazýván v jazyce Java generic type cleaning.
Uvědomme si důležitý bod. Odkazy na různé verze stejné generické třídy java nesmějí odkazovat na stejný objekt. To znamená, že máme dvě vazby: Pár
Omezení obecný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. Takové jednoduché typy, například dvojité nebo dlouhé, nemohou být přenášeny. Jinými slovy, následující řádek prohlášení třídy Pair není platný: Pár
Dalším závažným omezením je nemožnost vytvořit instanci parametru typu. Následující řádek způsobí chybu kompilace: T first = new T (). Je to zřejmé, protože předem nevíte, zda bude jako argument argumentace úplné nebo abstraktní. Totéž platí pro vytváření polí.
Omezené typy
Docela často existují situace, kdy je nutné omezit seznam typů, které mohou být předány jako argument do generické třídy java. Předpokládejme, že v třídě Pair chceme zapouzdřit výhradně číselné hodnoty pro další matematické operace na nich. Chcete-li to provést, musíme nastavit horní hranici parametru typu. Toto je implementováno pomocí deklarace nadklasy, kterou dědí všechny argumenty předané v úhlových závorkách. Bude to vypadat takto: třída Pair
To je běžná technika. Tato omezení se často používají k zajištění kompatibility parametrů typu ve stejné třídě. Zvažte příklad na naší třídě Pair: class Pair. Zde řekneme kompilátoru, že typ T může být libovolný a typ V musí být buď typ T, nebo jedna z jeho podtříd.
Omezení "zespodu" se vyskytuje přesně stejným způsobem, ale místo slova se rozšiřuje slovo super. To je třída Pair
Generické metody Java a konstruktory
V jazyce Java lze generalizovat nejen s ohledem na třídy, ale i metod. Takže obecná metoda může být deklarována v běžné třídě.
Jak je vidět na obrázku výše, není ve vyhlášení všeobecné metody nic složitého. Stačí zadat úhly závorky před návratovou metodou a zadat v nich typové parametry.
V případě konstruktoru se vše dělá stejným způsobem:
Úhelové konzoly v tomto případě jsou umístěny před jménem konstruktoru, protože nevracejí žádnou hodnotu. Výsledkem práce obou programů bude:
Integer
Řetězec
- Jak nainstalovat jazyk Java v systému Windows 7
- Jak aktualizovat jazyk Java v operačních systémech Linux a Windows?
- První program Java je Hello World
- Java programovací jazyk
- Jak a proč potřebuji instalovat Java na svém počítači?
- `Java-634` - oblíbený motocykl sedmdesátých let
- Cigarety Java: popis a typy
- Jávové pole řetězců. Třídění pole v jazyce Java. Dvourozměrné pole Java
- Java: regulární výrazy, speciální znaky
- Programování: Java. Typy dat
- Formát JAR: co se má otevřít v počítači nebo v telefonu
- Java: InputStream. Vstupní toky
- BigInteger Java: práce s velkými čísly
- Java Array. Pole v Javě. Java pro začátečníky
- Java: práce se soubory - psaní, čtení, mazání
- Prvky modelu objektu Java: abstraktní třída, rozhraní
- Jak povolit Javu ve Firefoxu pro problémy s uzamčením
- Jak odstranit java z počítače? Je to snadné!
- Zpracování znaků: podřetězec metody jаvascript ()
- Jak psát do souboru v jazyce Java
- Zpracování znaků: podřetězec metody jаvascript ()