Obwohl es einfach erscheinen mag, generische Typen in Java zu instanziieren, stellt es eine einzigartige Herausforderung dar. Dieser Artikel untersucht die Feinheiten dieser Aufgabe und bietet eine umfassende Lösung.
Betrachten Sie die folgende Klassendeklaration:
public class Abc<T> { public T getInstanceOfT() { // Create and return an instance of type T } }
Das Ziel besteht darin, eine Instanz des generischen Typs T innerhalb der Methode zu erstellen getInstanceOfT(). Das Löschen der Typinformationen während der Kompilierung macht es jedoch unmöglich, den tatsächlichen Typ von T anhand des Bytecodes zu bestimmen.
Um dieses Problem zu lösen, müssen wir den tatsächlichen Typ übergeben von T als Laufzeitargument. Dies kann erreicht werden, indem die Klassendeklaration wie folgt geändert wird:
public class Abc<T> { public T getInstanceOfT(Class<T> aClass) { return aClass.newInstance(); } }
Die Methode verwendet jetzt ein Klassenobjekt als Argument, das den tatsächlichen Typ von T darstellt, der instanziiert werden soll. Dadurch können wir Reflektion verwenden, um eine Instanz des gewünschten Typs zu erstellen.
Beachten Sie, dass eine Ausnahmebehandlung erforderlich ist, um etwaige Fehler während der Instanziierung zu verwalten.
Instanziierung generischer Typen In Java geht es darum, die tatsächlichen Typinformationen zur Laufzeit zu übergeben, da diese nicht aus dem Bytecode abgeleitet werden können. Durch die Verwendung des Klassenobjekts und der Reflexion ist es möglich, Instanzen generischer Typen dynamisch zu erstellen.
Das obige ist der detaillierte Inhalt vonWie instanziiere ich generische Typen in Java zur Laufzeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!