3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
泛型本來就是要在聲明時(shí)候用的。。。
Test<String> t = new Test<>();
這樣寫編譯器才知道t這個(gè)引用是個(gè)帶String泛型的Test引用。
Test t = new Test<String>();
這么寫編譯器只知道t這個(gè)引用指向了帶String泛型的一個(gè)對(duì)象。。。
但是不知道t是帶泛型的。。。
而你t.get() 這個(gè)方法是t這個(gè)引用調(diào)用的方法。。。
后一種寫法編譯器不知道你這個(gè)引用帶泛型。。。就默認(rèn)是Object類型。。。

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
Test t等同于 Test<Object> t, 返回期待是 Object,但實(shí)際也是 String , 所以你需要僅是加上強(qiáng)制轉(zhuǎn)換就好,即
String res = (String)t.get();

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
Object是一切的基類,所有的類都是Object,反射使用Object,可以保證通用性。
實(shí)際使用的時(shí)候,需要基于反射,進(jìn)行類型的判斷和轉(zhuǎn)換。
有把握的進(jìn)行強(qiáng)制轉(zhuǎn)化,也可以先判斷一下(instanceof ),更多的還是根據(jù)實(shí)際業(yè)務(wù)進(jìn)行封裝相應(yīng)的工具類
添加回答
舉報(bào)