jak používat třídu v Javě?
vše, co víme, je “ všechny instance libovolné třídy sdílí stejnou Javu.lang.Objekt třídy tohoto typu třídy „
např. g)
Student a = new Student();Student b = new Student();
pak a.getClass() == b.getClass()
je pravdivý.
nyní předpokládejme
Teacher t = new Teacher();
bez generik je možné níže.
Class studentClassRef = t.getClass();
ale to je teď špatně ..?
např.) public void printStudentClassInfo(Class studentClassRef) {}
lze volat pomocí Teacher.class
to lze vyhnout pomocí generik.,
Class<Student> studentClassRef = t.getClass(); //Compilation error.
Co je to T ?? T je typ, parametry (typ proměnné); odděleny lomených závorkách (<>), následuje název třídy.
t je pouze symbol, jako je název proměnné (může být libovolný název) deklarovaný během zápisu souboru třídy. Později, že T bude nahrazen
platný název Třídy během inicializace (HashMap<String> map = new HashMap<String>();
)
e.g) class name<T1, T2, ..., Tn>
Class<T>
reprezentuje třídu objektu z určité třídy typu ‚T
‚.,
Předpokládejme, že vaše metody třídy musí pracovat s neznámými parametry typu jako pod
Zde T může být použit jako String
typu jako CarName
NEBO T může být použit jako Integer
typu jako modelNumber,
NEBO T může být použit jako Object
typu jako platný auto stupně.
zde je výše uvedené jednoduché POJO,které lze použít odlišně za běhu.
sbírky např.) Seznam, Set, Hashmap jsou nejlepší příklady, které budou pracovat s různými objekty podle deklarace T, ale jakmile jsme deklarovali t jako řetězec
e.,g) HashMap<String> map = new HashMap<String>();
pak bude přijímat pouze objekty instance třídy String.
generické metody
generické metody jsou metody, které zavádějí vlastní parametry typu. To je podobné deklaraci generického typu, ale rozsah parametru typu je omezen na metodu, kde je deklarován. Statické a nestatické generické metody jsou povoleny, stejně jako generické konstruktory třídy.
syntaxe pro generickou metodu obsahuje parametr typu, vnitřní Úhlové závorky a zobrazí se před návratovým typem metody., U obecných metod se musí před návratovým typem metody Zobrazit část parametr typu.
Zde <K, V, Z, Y>
je prohlášení o typy používané v metodě argumenty, které by před návratový typ, což je boolean
zde.
níže; deklarace typu <T>
se nevyžaduje na úrovni metody, protože je již deklarována na úrovni třídy.
class MyClass<T> { private T myMethod(T a){ return a; }}
ale níže je špatně, protože parametry typu třídy K, V, Z A Y nelze použít ve statickém kontextu (statická metoda zde).,
DALŠÍ PLATNÉ SCÉNÁŘE JSOU
A konečně Statické metody vždy vyžaduje výslovný <T>
prohlášení; Je zvyklý odvodit z úrovně Class<T>
. Je to proto, že úroveň třídy T je vázána na instanci.
Přečtěte si také omezení generik
zástupné znaky a podtypy
typ argumentu pro generickou metodu