泛型類
public ?class Generic<T>{
? ? private Class<T> persistentClass;
? ? public Generic(){
???????? System.out.println(this.getClass());???????? System.out.println(this.getClass().getGenericSuperclass());
????????? this.persistentClass = ((Class<T>) ((ParameterizedType) this.getClass()?????????????????? .getGenericSuperclass()).getActualTypeArguments()[0]);
? ? }
}
測試類
public class Test extends Generic<Person>{
? public static void main(String[] args) {??????????????????? Test test= new Test();????????}
}
問題:
1、第一行輸出的結果為什么會是? Test 而不是Generic
2、誰能告訴我實例化類型參數的那行代碼為什么要使用getGenericSuperclass()這個方法啊,不適用這個方法的話有沒有辦法實例化類型參數啊?
?
謝謝大神們賜教,小弟是菜鳥
1 回答

陪伴而非守候
TA貢獻1757條經驗 獲得超8個贊
1.因為Test繼承了Generic<Person>,這時候Generic<Person>是Test的父類,他們2個不相等的,你用的Test實例調用的GetClass,返回的自然是Test
2.問題沒看明白,是說要取得T在這個實現中被指定的值Person嗎?
添加回答
舉報
0/150
提交
取消