泛型類
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、第一行輸出的結(jié)果為什么會(huì)是? Test 而不是Generic
2、誰能告訴我實(shí)例化類型參數(shù)的那行代碼為什么要使用getGenericSuperclass()這個(gè)方法啊,不適用這個(gè)方法的話有沒有辦法實(shí)例化類型參數(shù)?。??
謝謝大神們賜教,小弟是菜鳥
1 回答

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