hogyan kell használni osztály Java?
csak annyit tudunk, hogy ” minden esetben egy bármely osztály osztja ugyanazt a java.lang.A”
e.g)
Student a = new Student();Student b = new Student();
akkor a.getClass() == b.getClass() igaz.
most feltételezzük, hogy
Teacher t = new Teacher();
generikumok nélkül az alábbi lehetséges.
Class studentClassRef = t.getClass();
de ez most rossz..?
pl.)public void printStudentClassInfo(Class studentClassRef) {}Teacher.class
ez elkerülhető generikumok alkalmazásával.,
Class<Student> studentClassRef = t.getClass(); //Compilation error.
most mi a T ?? T típusparaméterek (más néven típusváltozók); szögletes zárójelekkel határolva (<>), az osztály nevét követi.
t csak egy szimbólum, mint egy változó név (Bármilyen név lehet), amelyet az osztályfájl írása során deklarálnak. Később, hogy a t az inicializálás során
érvényes Osztálynévvel lesz helyettesítve (HashMap<String> map = new HashMap<String>();)
e.g) class name<T1, T2, ..., Tn>
tehát Class<T> egy adott osztálytípusú osztályobjektumot jelent ‘T“.,
feltételezzük, hogy az osztály módszereinek ismeretlen típusparaméterekkel kell működniük, mint például az alábbi
Itt t lehet használni, mint String Típus mint CarName
vagy T lehet használni, mint Integer típus modelNumber,
vagy T lehet használni, mint Object típus érvényes autópéldányként.
most itt a fenti az egyszerű POJO, amely lehet használni másképp futási időben.
gyűjtemények pl.) lista, készlet, Hashmap a legjobb példa, amely működni fog a különböző objektumok, mint egy nyilatkozat T, de ha egyszer deklaráltuk t String
e.,g) HashMap<String> map = new HashMap<String>(); akkor csak a String Class példány objektumokat fogadja el.
Generic Methods
Generic methods are methods that Introduction their own type parameters. Ez hasonló a generikus típus deklarálásához, de a típusparaméter hatóköre a deklarált módszerre korlátozódik. Statikus és nem statikus Generikus módszerek, valamint generikus osztály konstruktorok megengedettek.
egy általános módszer szintaxisa tartalmaz egy típusparamétert, szögletes zárójelben, és a módszer visszatérési típusa előtt jelenik meg., Általános módszerek esetén a típusparaméter szakasznak meg kell jelennie a módszer visszatérési típusa előtt.
itt <K, V, Z, Y> a módszer argumentumaiban használt típusok deklarációja, amelynek a boolean itt kell lennie.
az alábbiakban; type declaration nem szükséges a módszer szintjén, mivel azt már osztályszinten deklarálták.
class MyClass<T> { private T myMethod(T a){ return a; }}
de alul hibás, mivel a K, V, Z és Y osztályszintű típusparaméterek statikus kontextusban nem használhatók (statikus módszer itt).,
egyéb érvényes forgatókönyvek:
és végül statikus metódus mindig explicit deklarációt igényel; nem aClass<T>osztályszintből származik. Ennek oka az, hogy a T osztály szintje a példányhoz van kötve.
olvassa el a generikumok korlátozásait is
helyettesítő karakterek és altípus
típus argumentum egy általános módszerhez















