Home >Java >javaTutorial >How to Determine the Generic Type of a Java `List` Object?

How to Determine the Generic Type of a Java `List` Object?

Susan Sarandon
Susan SarandonOriginal
2024-12-28 11:12:12618browse

How to Determine the Generic Type of a Java `List` Object?

How to Retrieve the Generic Type of a java.util.List

In Java, generics allow collections to store elements of a specific type, such as List or List. Occasionally, it becomes necessary to determine the generic type of a list.

One approach to retrieving the generic type involves reflection, as demonstrated in the following code:

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;

public class Test {

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

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

        Field stringListField = testClass.getDeclaredField("stringList");
        ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();
        Class<?> stringListClass = (Class<?>) stringListType.getActualTypeArguments()[0];
        System.out.println(stringListClass); // class java.lang.String

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

This technique can be used to obtain the generic type of fields, parameter types, and return types of methods. However, it's important to note that if the generic type is within the same scope where it's declared, there is no inherent need to retrieve it since it's already known.

The above is the detailed content of How to Determine the Generic Type of a Java `List` Object?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn