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<T> {
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());
}
}
}
}
通過以上步驟,可以獲取到泛型類的泛型信息,從而進行進一步的操作。