Heim >Java >javaLernprogramm >Wie instanziiere ich einen generischen Typ in Java mit einem Klassenparameter?

Wie instanziiere ich einen generischen Typ in Java mit einem Klassenparameter?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-24 08:43:12630Durchsuche

How to Instantiate a Generic Type in Java with a Class Parameter?

Generika-Typ in Java mit Klassenparametern instanziieren

Generika in Java bieten eine bequeme Möglichkeit, Klassen und Methoden zu definieren, die auf einer Vielzahl von Funktionen basieren Datentypen. Das Instanziieren eines Objekts eines generischen Typs kann jedoch etwas schwierig sein.

Angenommen, Sie haben eine Klassendeklaration wie diese:

public class Abc<T> {
    public T getInstanceOfT() {
        // I want to create an instance of T and return the same.
    }
}

Wie können Sie ein Objekt vom Typ T in der erstellen? getInstanceOfT-Methode?

Lösung:

Der Schlüssel zur Instanziierung einer Der generische Typ besteht darin, den tatsächlichen Typ als Argument an die generische Klasse zu übergeben. Dies kann mit der Klasse erfolgen. Typparameter:

public class Abc<T> {
    public T getInstanceOfT(Class<T> aClass) {
        return aClass.newInstance();
    }
}

In diesem geänderten Code akzeptiert die Methode getInstanceOfT ein Argument vom Typ Class, das den tatsächlichen Typ des zu erstellenden Objekts darstellt. Die newInstance()-Methode für das Class-Objekt erstellt dann eine Instanz dieses Typs und gibt sie zurück.

Ausnahmebehandlung:

Es ist wichtig zu beachten, dass Sie Folgendes benötigen um Ihrem Code eine Ausnahmebehandlung hinzuzufügen, da newInstance() eine InstantiationException oder IllegalAccessException auslösen kann.

Laufzeit Typ:

Die Übergabe des tatsächlichen Typs als Argument ist erforderlich, da der Typ von T zur Kompilierungszeit nicht bekannt ist. Nach der Kompilierung enthält der Bytecode keine Informationen über den tatsächlichen Typ und muss daher zur Laufzeit explizit bereitgestellt werden.

Das obige ist der detaillierte Inhalt vonWie instanziiere ich einen generischen Typ in Java mit einem Klassenparameter?. 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