Articles

Hoe gebruik ik Class in Java?

alles wat we weten is ” alle instanties van een elke klasse heeft dezelfde java.lang.Klasse-object van dat type klasse “

e.g)

Student a = new Student();Student b = new Student();

dan is a.getClass() == b.getClass() waar.

neem nu aan

Teacher t = new Teacher();

zonder generica is het volgende mogelijk.

Class studentClassRef = t.getClass();

maar dit is nu verkeerd ..?

e. g) public void printStudentClassInfo(Class studentClassRef) {} kan worden aangeroepen met Teacher.class

Dit kan worden vermeden met behulp van generieke geneesmiddelen.,

Class<Student> studentClassRef = t.getClass(); //Compilation error.

Wat is T ?? T is typeparameters (ook typevariabelen genoemd); begrensd door hoekhaken (<>), volgt de klassenaam.
T is slechts een symbool, zoals een variabele naam (kan elke naam zijn) die wordt opgegeven tijdens het schrijven van het class-bestand. Later zal T worden vervangen door
geldige klassenaam tijdens initialisatie (HashMap<String> map = new HashMap<String>();)

e.g) class name<T1, T2, ..., Tn>

So Class<T> vertegenwoordigt een klasse-object van een specifiek klasse-type ‘T“.,

neem aan dat uw klasse methoden moeten werken met onbekende type parameters zoals hieronder

Hier kan T worden gebruikt als String type als CarName

OF T kan worden gebruikt als Integer type als modelnummer,

OF T kan worden gebruikt als Object typ als geldige auto-instantie.

Hier is het bovenstaande de eenvoudige POJO die anders kan worden gebruikt tijdens runtime.
collecties e. g) List, Set, Hashmap zijn de beste voorbeelden die werken met verschillende objecten volgens de declaratie van T, maar zodra we t hebben gedeclareerd als String
e.,g) HashMap<String> map = new HashMap<String>(); dan zal het alleen String Class instance objecten accepteren.

Generieke methoden

Generieke methoden zijn methoden die hun eigen typeparameters invoeren. Dit is vergelijkbaar met het declareren van een generiek type, maar het bereik van de type parameter is beperkt tot de methode waar het gedeclareerd wordt. Statische en niet-statische generieke methoden zijn toegestaan, evenals generieke klasse constructors.

de syntaxis voor een generieke methode bevat een type parameter, binnen hoekhaken, en verschijnt voor het return type van de methode., Voor generieke methoden moet de sectie type parameter verschijnen voor het return type van de methode.

Hier <K, V, Z, Y> is de declaratie van types die worden gebruikt in de methode argumenten die vóór het return type dat boolean hier.

in het onderstaande; type declaratie <T> is niet vereist op methodeniveau, omdat het al is gedeclareerd op klassenniveau.

class MyClass<T> { private T myMethod(T a){ return a; }}

maar hieronder is onjuist omdat klasse-niveau type parameters K, V, Z, en Y niet kunnen worden gebruikt in een statische context (statische methode hier).,

andere geldige scenario ‘ s zijn

en tot slot heeft de statische methode altijd een expliciete <T> declaratie nodig; het zal niet afgeleid worden van klasse niveau Class<T>. Dit komt door Klasse niveau T is gebonden aan instantie.

Lees ook beperkingen op generiek

jokertekens en Subtypering

typeargument voor een generieke methode