Articles

Verwendung-Klasse in Java?

Alles, was wir wissen, ist „Alle Instanzen einer Klasse teilen sich das gleiche Java.lang.Klassenobjekt dieser Art von Klasse „

zB)

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

Dann ist a.getClass() == b.getClass() wahr.

angenommen

Teacher t = new Teacher();

ohne Generika ist Folgendes möglich.

Class studentClassRef = t.getClass();

Aber das ist jetzt falsch ..?

z. B.) public void printStudentClassInfo(Class studentClassRef) {} kann mit Teacher.class

aufgerufen werden Dies kann mit Generika vermieden werden.,

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

Nun, was ist T ?? T ist Typparameter (auch Typvariablen genannt); durch eckige Klammern begrenzt (<>), folgt dem Klassennamen.
T ist nur ein Symbol, wie ein Variablenname (kann ein beliebiger Name sein), der beim Schreiben der Klassendatei deklariert wurde. Später wird T während der Initialisierung durch
gültigen Klassennamen ersetzt (HashMap<String> map = new HashMap<String>();)

z. B) class name<T1, T2, ..., Tn>

Class<T> repräsentiert ein Klassenobjekt des spezifischen Klassentyps “.,

Angenommen, Ihre Klassenmethoden müssen mit unbekannten Typparametern wie unten arbeiten

Hier kann T als String Typ als CarName verwendet werden

ODER T kann als Integer Typ als modelNumber verwendet werden,

ODER T kann als Object Typ als gültige Autoinstanz verwendet werden.

Nun, hier ist das Obige das einfache POJO, das zur Laufzeit unterschiedlich verwendet werden kann.
( zB) List, Set, Hashmap sind die besten Beispiele, die mit verschiedenen Objekten gemäß der Deklaration von T funktionieren,aber sobald wir T als String deklariert haben
e.,g) HashMap<String> map = new HashMap<String>(); Dann akzeptiert es nur String-Klasseninstanzobjekte.

Generische Methoden

Generische Methoden sind Methoden, die eigene Typparameter einführen. Dies ähnelt der Deklaration eines generischen Typs, aber der Bereich des Typparameters ist auf die Methode beschränkt, in der er deklariert wird. Statische und nicht statische generische Methoden sowie generische Klassenkonstruktoren sind zulässig.

Die Syntax für eine generische Methode enthält einen Typparameter in eckigen Klammern und wird vor dem Rückgabetyp der Methode angezeigt., Bei generischen Methoden muss der Abschnitt Typparameter vor dem Rückgabetyp der Methode angezeigt werden.

Hier <K, V, Z, Y> ist die Deklaration von Typen, die in den Methodenargumenten verwendet werden und vor dem Rückgabetyp stehen sollten, der boolean hier.

Im Folgenden; Typdeklaration <T> ist auf Methodenebene nicht erforderlich, da sie bereits auf Klassenebene deklariert ist.

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

Aber unten ist falsch, da die Typparameter K, V, Z und Y auf Klassenebene nicht in einem statischen Kontext verwendet werden können (statische Methode hier).,

ANDERE GÜLTIGE SZENARIEN SIND

Und schließlich benötigt die statische Methode immer eine explizite<T> Deklaration; Es wird nicht von der Klassenebene Class<T>abgeleitet. Dies liegt daran, dass die Klassenebene T an die Instanz gebunden ist.

Lesen Sie auch Einschränkungen für Generika

Platzhalter und Untertypisierung

Typargument für eine generische Methode