Heim > Java > javaLernprogramm > Hauptteil

Wie bestimmt man die Klasse eines generischen Typs in generischen Klassen?

Barbara Streisand
Freigeben: 2024-11-11 12:43:02
Original
832 Leute haben es durchsucht

How to Determine the Class of a Generic Type in Generic Classes?

Generische Typklassenbestimmung in generischen Klassen

Bei der objektorientierten Programmierung ist häufig die Bestimmung der Klasse eines generischen Typs erforderlich. Bei der Verwendung generischer Klassen wird diese Aufgabe jedoch aufgrund der Typlöschung zur Laufzeit zu einer Herausforderung.

Betrachten Sie das folgende Beispiel, in dem MyGenericClass versucht, mithilfe einer Drittanbieterbibliothek eine Instanz vom Typ T zu erstellen:

public class MyGenericClass<T> {
  public void doSomething() {
    // Create an instance of class T
    T bean = (T)someObject.create(T.class);
  }
}
Nach dem Login kopieren

Dieser Ansatz schlägt mit dem Fehler „Ungültiges Klassenliteral für den Typparameter T“ fehl. Um dieses Problem zu beheben, besteht eine übliche Problemumgehung darin, den Typ T als Parameter an eine statische Methode zu übergeben:

public class MyGenericClass<T> {

    private final Class<T> clazz;

    public static <U> MyGenericClass<U> createMyGeneric(Class<U> clazz) {
        return new MyGenericClass<U>(clazz);
    }

    protected MyGenericClass(Class<T> clazz) {
        this.clazz = clazz;
    }

    public void doSomething() {
        // Create an instance of class T
        T instance = clazz.newInstance();
    }
}
Nach dem Login kopieren

Durch explizite Übergabe der Klasse T kann der Code erfolgreich eine Instanz des gewünschten Typs erstellen. Obwohl diese Methode nicht so elegant ist wie ein direkter Methodenaufruf, bietet sie eine zuverlässige Lösung zur Bestimmung der Klasse eines generischen Typs.

Das obige ist der detaillierte Inhalt vonWie bestimmt man die Klasse eines generischen Typs in generischen Klassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage