Útmutató a Java gyémántkezelőhöz
1. Áttekintés
Ebben a cikkben megnézzük a gyémánt operátor a Java-ban, valamint hogy a generikumok és a Collections API hogyan befolyásolták annak fejlődését.
2. Nyers típusok
A Java 1.5 előtt a Collections API csak nyers típusokat támogatott - a gyűjtemény felépítésénél nem volt mód paraméterek paraméterezésére:
Autók listája = new ArrayList (); autók.add (új objektum ()); autók.add ("autó"); autók.add (új egész szám (1));
Ez lehetővé tette bármilyen típus hozzáadását és futás közbeni potenciális casting kivételekhez vezetett.
3. Generikusok
A Java 1.5-ben a Generics került bevezetésre - ami lehetővé tette számunkra az osztályok típus argumentumainak paraméterezését, beleértve a Gyűjtemények API-jába tartozókat is - objektumok deklarálásakor és összeállításakor:
Autók listája = new ArrayList ();
Ezen a ponton muszáj adja meg a paraméterezett típust a konstruktorban, amely kissé olvashatatlan lehet:
Térkép <>>> autók = új HashMap <>>>();
Ennek a megközelítésnek az az oka a visszamenőleges kompatibilitás érdekében még mindig léteznek nyers típusok, ezért a fordítónak meg kell különböztetnie ezeket a nyers típusokat és az általánosakat:
List generics = new ArrayList (); List nyers = new ArrayList ();
Annak ellenére, hogy a fordító továbbra is engedélyezi a nyers típusok használatát a konstruktorban, figyelmeztető üzenetet küld:
Az ArrayList egy nyers típus. Az ArrayList általános típusú hivatkozásokat paraméterezni kell
4. Gyémántkezelő
A gyémánt operátor - bevezetve a Java 1.7-be - hozzáadja a típus következtetését és csökkenti a kijelölések részletességét - generikus gyógyszerek használata esetén:
Autók listája = new ArrayList ();
A Java 1.7 fordító típuskövetkeztetési funkciója meghatározza a legmegfelelőbb konstruktor deklarációt, amely megfelel az invokációnak.
Vegye figyelembe a következő interfészt és osztályhierarchiát a járművek és motorok használatához:
nyilvános kezelőfelület Motor {} nyilvános osztályú dízel hajtóművek motor {} nyilvános felület jármű {}} nyilvános osztályú gépjármű járművek {}
Hozzunk létre egy új példányt a Autó a gyémánt operátor használatával:
Autó myCar = új autó ();
Belsőleg ezt a fordító tudja Dízel végrehajtja a Motor interfészt, majd a típus következtetésével képes meghatározni a megfelelő konstruktort.
5. Következtetés
Egyszerűen fogalmazva: a gyémánt operátor hozzáadja a típus következtetés funkcióját a fordítóhoz, és csökkenti a generikusokkal bevezetett hozzárendelések sokszínűségét.
Néhány példa erre az oktatóanyagra a GitHub projektben található, ezért nyugodtan töltse le és játsszon vele.