java reflection如何獲取泛型信息

小樊
189
2024-07-20 19:14:05
欄目: 編程語言

Java反射API提供了獲取泛型信息的方法,可以通過以下步驟獲得泛型信息:

  1. 獲取Class對(duì)象 首先需要獲取包含泛型信息的類的Class對(duì)象,可以通過Class類的forName方法或者直接使用類的.class屬性來獲取。

  2. 獲取泛型類型信息 通過Class對(duì)象的getGenericSuperclass()方法獲取當(dāng)前類的泛型超類信息(即父類的泛型信息),或者通過getGenericInterfaces()方法獲取當(dāng)前類實(shí)現(xiàn)的接口的泛型信息。

  3. 解析泛型信息 通過ParameterizedType接口的getTypeName()方法可以獲取泛型類型的名稱,通過getActualTypeArguments()方法可以獲取泛型類型的實(shí)際類型參數(shù)列表。

  4. 示例代碼

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());
            }
        }
    }
}

通過以上步驟,可以獲取到泛型類的泛型信息,從而進(jìn)行進(jìn)一步的操作。

0