Heim  >  Artikel  >  Java  >  Wie bestimme ich die Klasse eines generischen Typs in Java zur Laufzeit?

Wie bestimme ich die Klasse eines generischen Typs in Java zur Laufzeit?

Susan Sarandon
Susan SarandonOriginal
2024-11-12 07:39:02685Durchsuche

How to Determine the Class of a Generic Type in Java at Runtime?

Bestimmen der Klasse eines generischen Typs in Java

In Java ist es beim Umgang mit generischen Klassen oft notwendig, den spezifischen Typ zu bestimmen, den ein generischer Typ annimmt Laufzeit. Allerdings werden generische Typinformationen während der Kompilierung gelöscht, was den direkten Zugriff darauf erschwert.

Betrachten wir ein Beispiel:

public class MyGenericClass<T> {

  public void doSomething() {
    T instance = (T) thirdPartyLib.create(T.class);
  }
}

In diesem Szenario führt T.class zu einer Unzulässiger Klassenliteralfehler, da der generische Typ T unbekannt ist. Um dieses Problem zu beheben, ist eine Problemumgehung erforderlich.

Problemumgehungslösung

Eine effektive Problemumgehung besteht darin, den Typ als Parameter an eine statische Methode zu übergeben, die der generischen Klasse die Klasseninformationen bereitstellt. Hier ist ein Beispiel:

public class MyGenericClass<T> {

  private final Class<T> type;

  public static <U> MyGenericClass<U> createWithClass(Class<U> type) {
    return new MyGenericClass<>(type);
  }

  private MyGenericClass(Class<T> type) {
    this.type = type;
  }

  public void doSomething() {
    T instance = type.newInstance();
  }
}

Mit dieser Methode können Sie den Klassentyp explizit übergeben und so sicherstellen, dass die generische Klasse Zugriff auf die erforderlichen Informationen hat. Obwohl diese Problemumgehung möglicherweise nicht die eleganteste Lösung ist, bietet sie eine zuverlässige Möglichkeit, die Klasse eines generischen Typs zur Laufzeit zu bestimmen.

Das obige ist der detaillierte Inhalt vonWie bestimme ich die Klasse eines generischen Typs in Java zur Laufzeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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