Heim >Java >javaLernprogramm >Wie erhalte ich den generischen Typ einer java.util.List mithilfe von Reflection?

Wie erhalte ich den generischen Typ einer java.util.List mithilfe von Reflection?

Linda Hamilton
Linda HamiltonOriginal
2024-12-22 21:26:171018Durchsuche

How to Get the Generic Type of a java.util.List using Reflection?

So erhalten Sie den generischen Typ einer java.util.List

Um den generischen Typ einer bestimmten java.util.List abzurufen kann man Reflexionstechniken anwenden, wenn die genannten Listeninstanzen Felder innerhalb einer Klasse sind. So geht's:

// Declare fields of type List<String> and List<Integer>
List<String> stringList = new ArrayList<>();
List<Integer> integerList = new ArrayList<>();

public static void main(String[] args) throws Exception {
    Class<Test> testClass = Test.class;

    // Obtain the Field object of the stringList field
    Field stringListField = testClass.getDeclaredField("stringList");
    // Determine the generic type of stringList using ParameterizedType
    ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
    // Retrieve the actual type argument (i.e., generic type) of stringListType
    Class<?> stringListClass = stringListType.getActualTypeArguments()[0];
    System.out.println(stringListClass); // class java.lang.String

    // Perform the same process for the integerList field
    Field integerListField = testClass.getDeclaredField("integerList");
    ParameterizedType integerListType = (ParameterizedType) integerListField.getGenericType();
    Class<?> integerListClass = integerListType.getActualTypeArguments()[0];
    System.out.println(integerListClass); // class java.lang.Integer
}

Dieser Ansatz ist auch auf Parametertypen und Rückgabetypen von Methoden anwendbar. Es ist jedoch wichtig zu beachten, dass keine Notwendigkeit besteht, Reflektion zu verwenden, wenn sich die List-Instanzen im Bereich der Klasse oder Methode befinden, in der sie benötigt werden, da die generischen Typen explizit deklariert werden.

Das obige ist der detaillierte Inhalt vonWie erhalte ich den generischen Typ einer java.util.List mithilfe von Reflection?. 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