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.
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!