Heim >Java >javaLernprogramm >Wie kann ich mithilfe von Reflection den generischen Typ einer Java-Liste abrufen?

Wie kann ich mithilfe von Reflection den generischen Typ einer Java-Liste abrufen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-21 15:41:18987Durchsuche

How Can I Retrieve the Generic Type of a Java List Using Reflection?

Generischen Typ einer Java-Liste abrufen

Bei der Arbeit mit generischen Typen in Java kann es nützlich sein, die spezifische Klasse abzurufen, die einem generischen Typ zugeordnet ist. Betrachten Sie das folgende Beispiel:

List<String> stringList = new ArrayList<String>();
List<Integer> integerList = new ArrayList<Integer>();

In diesem Szenario möchten wir möglicherweise auf die tatsächlichen Klassentypen zugreifen, die diesen Listen zugeordnet sind, nämlich String und Integer. Glücklicherweise bietet Java eine Möglichkeit, diese Informationen mithilfe von Reflection abzurufen.

Mit Reflection

Durch die Verwendung der getDeclaredField-Methode können wir auf das Feld in einer Klasse zugreifen, die die generische Liste enthält. Von dort können wir den ParameterizedType des Felds abrufen und die tatsächlichen Klasseninformationen extrahieren. Hier ist ein Beispiel:

Field stringListField = testClass.getDeclaredField("stringList");
ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
Class<?> stringListClass = (Class<?>) stringListType.getActualTypeArguments()[0];

Dieser Code weist die Klasse Objekt in die Variable stringListClass einfügen, sodass wir den generischen Typ der Liste bestimmen können. Der gleiche Ansatz kann verwendet werden, um den generischen Typ des Felds „IntegerList“ abzurufen.

Alternative Überlegungen

Wenn die Listen im Rahmen einer Methode definiert sind, besteht keine Notwendigkeit, ihren generischen Typ abzurufen Typen explizit. Dies liegt daran, dass die Typinformationen im Kontext der Methode leicht verfügbar sind.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection den generischen Typ einer Java-Liste abrufen?. 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