首先放上运行期反射获取Java泛型类型的相关信息的代码:
import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class Test2 { public static void main(String[] args) { Example<String> example = new Example<String>() {}; Class<String> type = example.getType(); System.out.println(type); // 输出:class java.lang.String } public static class Example<T> { private Class<T> type; public Example() { // 获取泛型类型信息 Type genericType = getClass().getGenericSuperclass(); if (genericType instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) genericType; Type[] typeArguments = parameterizedType.getActualTypeArguments(); if (typeArguments.length > 0) { type = (Class<T>) typeArguments[0]; } }