中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

java怎么獲取泛型的類名

小億
154
2023-11-14 00:42:42
欄目: 編程語言

在Java中,無法在運行時直接獲取泛型的類型參數,因為Java的泛型擦除機制會將泛型類型擦除為其原始類型。

但是,可以使用反射來獲取泛型類型的類名。下面是一個示例:

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class GenericClass<T> {
    private Class<?> genericType;

    public GenericClass() {
        Type superClass = getClass().getGenericSuperclass();
        if (superClass instanceof ParameterizedType) {
            ParameterizedType parameterizedType = (ParameterizedType) superClass;
            Type[] typeArgs = parameterizedType.getActualTypeArguments();
            if (typeArgs.length > 0) {
                this.genericType = (Class<?>) typeArgs[0];
            }
        }
    }

    public Class<?> getGenericType() {
        return genericType;
    }

    public static void main(String[] args) {
        GenericClass<String> genericClass = new GenericClass<>();
        Class<?> genericType = genericClass.getGenericType();
        System.out.println(genericType.getName());  // 輸出: java.lang.String
    }
}

在上面的示例中,我們定義了一個泛型類GenericClass<T>,并使用反射在構造方法中獲取泛型類型參數的類名。在main方法中,我們創建了一個GenericClass<String>的實例,并通過getGenericType()方法獲取泛型類型的類名。

需要注意的是,這種方法僅適用于直接繼承泛型類的情況。對于間接繼承泛型類或實現泛型接口的情況,需要對繼承層級進行遞歸處理。

0
防城港市| 乌拉特后旗| 东海县| 长海县| 德安县| 北安市| 手机| 扶绥县| 颍上县| 平谷区| 姚安县| 婺源县| 板桥市| 临湘市| 英吉沙县| 济源市| 治县。| 博客| 沁水县| 松江区| 郎溪县| 绥宁县| 南城县| 日照市| 乳山市| 苏尼特右旗| 嵊泗县| 土默特左旗| 龙江县| 洛川县| 渑池县| 庆云县| 行唐县| 会理县| 宁德市| 疏附县| 灌阳县| 赤城县| 三门县| 平安县| 沛县|