3 Stimmen

Holen Sie sich Anforderungs-Generiktyp in Methode

Ich habe eine Methode, die einen generischen Typ zurückgibt. Gibt es eine Möglichkeit, den Wert von zurückzugeben, ohne dies durch Parameter anzugeben?

public  T getObject(String location, String method)
{
    // ! Hier möchte ich die Klasse von T zurückgeben
    Class requestedClass = getMeTheClassThatWasRequested();

    return requestedClass;
}

Gibt es einen Weg, dies zu tun?

9voto

Pace Punkte 38003

Nein, du musst explizit die Typinformationen übergeben. Java verwirft alle Typinformationen zur Kompilierzeit. Dies nennt man 'Typenlöschung'. Das ist auch der Grund, warum die toArray-Methode von Objekten der Sammlungen ein Array vom Typ T benötigt, um ein Array vom Typ T zurückzugeben. Sie verwendet dieses Eingabearray ausschließlich für die Typinformationen.

2voto

thecoop Punkte 43958

Java Generika sind nur zur Kompilierzeit verfügbar. Eine Class-Referenz wird in eine Class mit Einfügungen von Casts an den entsprechenden Stellen kompiliert (zum Beispiel der Rückgabewert der newInstance-Methode). Also nein, das geht nicht. Du musst es als generischen Typvariablen in die Methode übergeben, wenn du es verwendest.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X