父類獲取子類泛型

原文:https://blog.csdn.net/weixin_38756990/article/details/72871920

public class Parent<T> {
    // 用於接收傳遞的clazz
    private Class clazz;

    // 獲取子類傳遞給他的具體泛型類型
    public Parent() {
        // 1獲取子類的class(在創建子類對象的時候,會返回父類的構造方法)
        Class<? extends Parent> clazz = this.getClass(); // Student
        // 2獲取當前類的帶有泛型的父類類型
        ParameterizedType type = (ParameterizedType) clazz.getGenericSuperclass();
        // 3返回實際參數類型(泛型可以寫多個)
        Type[] types = type.getActualTypeArguments();
        // 4 獲取第一個參數(泛型的具體類) Person.class
        this.clazz = (Class) types[0];//原文鏈接中的一處錯誤是沒有添加 "this"
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章