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
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!