Java反射API提供了获取泛型信息的方法,可以通过以下步骤获得泛型信息:
-
获取Class对象 首先需要获取包含泛型信息的类的Class对象,可以通过Class类的forName方法或者直接使用类的.class属性来获取。
-
获取泛型类型信息 通过Class对象的getGenericSuperclass()方法获取当前类的泛型超类信息(即父类的泛型信息),或者通过getGenericInterfaces()方法获取当前类实现的接口的泛型信息。
-
解析泛型信息 通过ParameterizedType接口的getTypeName()方法可以获取泛型类型的名称,通过getActualTypeArguments()方法可以获取泛型类型的实际类型参数列表。
-
示例代码
import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class GenericClass{ public static void main(String[] args) { Class> clazz = GenericClass.class; Type genericSuperclass = clazz.getGenericSuperclass(); if(genericSuperclass instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass; Type[] actualTypeArguments = parameterizedType.getActualTypeArguments(); for(Type type : actualTypeArguments) { System.out.println(type.getTypeName()); } } } }
通过以上步骤,可以获取到泛型类的泛型信息,从而进行进一步的操作。