cum se utilizează clasa în Java?
tot ce știm este ” toate instanțele unei clase de orice acțiuni aceeași java.lang.Clasa obiect de acest tip din clasa”
e.g)
Student a = new Student();Student b = new Student();
Apoi a.getClass() == b.getClass()
este adevărat.
acum presupunem
Teacher t = new Teacher();
fără generice de mai jos este posibil.
Class studentClassRef = t.getClass();
dar acest lucru este greșit acum ..?
e.g) public void printStudentClassInfo(Class studentClassRef) {}
poate fi numit cu Teacher.class
Acest lucru poate fi evitat folosind generice.,
Class<Student> studentClassRef = t.getClass(); //Compilation error.
acum Ce este T ?? T este tipul parametrilor (de asemenea, numit tip de variabile); delimitat de paranteze unghiulare (<>), urmează un nume de clasa.
T este doar un simbol, ca un nume de variabilă (poate fi orice nume) declarat în timpul scrierii fișierului de clasă. Mai târziu în acea T va fi înlocuit cu
valabil nume de Clasă în timpul inițializării (HashMap<String> map = new HashMap<String>();
)
e.g) class name<T1, T2, ..., Tn>
Class<T>
reprezintă un obiect de clasă de clasă specifică de tip ‘T
‘.,
Presupune că metodele clasei trebuie să lucreze cu un tip necunoscut parametrii de mai jos
Aici T poate fi folosit ca String
tip ca CarName
SAU T poate fi folosit ca Integer
tip ca modelNumber,
SAU T poate fi folosit ca Object
tip ca valabil masina de exemplu.
acum, aici cele de mai sus este POJO simplu, care poate fi folosit în mod diferit în timpul rulării.
colecții de exemplu) listă, Set, Hashmap sunt cele mai bune exemple care vor lucra cu diferite obiecte ca pe declarația de T, dar odată ce am declarat T ca șir
E.,g) HashMap<String> map = new HashMap<String>();
atunci va accepta doar obiecte de instanță de clasă String.metodele generice sunt metode care introduc parametrii de tip proprii. Acest lucru este similar cu declararea unui tip generic, dar domeniul de aplicare al parametrului de tip este limitat la metoda în care este declarat. Sunt permise metode generice statice și non-statice, precum și constructori de clase generice.
sintaxa pentru o metodă generică include un parametru de tip, în interiorul paranteze unghiulare, și apare înainte de tipul de întoarcere a metodei., Pentru metodele generice, secțiunea parametru de tip trebuie să apară înainte de tipul de întoarcere al metodei.
Aici <K, V, Z, Y>
este declarația de tipurile utilizate în metoda argumente care ar trebui înainte de a reveni tip care este boolean
aici.
în cele de mai jos; declarația de tip<T>
nu este necesară la nivel de metodă, deoarece este deja declarată la nivel de clasă.
class MyClass<T> { private T myMethod(T a){ return a; }}
dar mai jos este greșit ca parametrii de tip la nivel de clasă K, V, Z și Y nu pot fi utilizați într-un context static (metoda statică aici).,
ALTE VALABIL SCENARII SUNT
Și în cele din urmă metodă Statică întotdeauna nevoile explicite <T>
declarație; obiceiul deriva de la nivel de clasă Class<T>
. Acest lucru se datorează faptului că nivelul clasei T este legat de instanță.
Citește, de asemenea, restricții privind generice
metacaractere și Subtipare
argument de tip pentru o metodă generică