Java 類型信息 —— 獲取泛型類型的類對象(.class)


How to get a class instance of generics type T

考慮泛型類Foo<T>,在其成員中,如果想獲取類型(type)T的類實例(class instance of type T),是不可以直接調用 T.class的。原因在於,Java 語言無法獲取泛型類型參數(T)的運行時信息(不可以直接調用 T.class)。

0. 常用解決方案

既然無法調用泛型類型參數的運行時類型信息,便在調用端,顯示地傳遞該類的運行時類型信息進去(通過構造函數),一種慣用的解決方案如下:

class Foo<T> {
    private final Class<T> type;
    public Foo<T>(Class<T> type) {
        this.type = type;
    }
    public static void main(String[] args) {
        // 在客戶端調用時,便會顯得有些啰嗦
        Foo<SomeClass> f = new Foo<SomeClass>(SomeClass.class);
    }
}

1. Pure Java solution


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM