第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

java 泛型(類)方法返回值為什么是 Object??

java 泛型(類)方法返回值為什么是 Object??

qq_遁去的一_1 2019-01-16 17:25:46
我認(rèn)知中,java 虛擬機(jī)是不認(rèn)識(shí)泛型類或泛型方法的,所以在編譯成字節(jié)碼的時(shí)候,所有的泛型類或泛型方法,都會(huì)被轉(zhuǎn)換成普通的類或方法。 例如: // 泛型類 class Test<T> { public T res = null; public Test(T res){ this.res = res; } public T get(){ return this.res; } } Test t = new Test<String>("泛型類-Test的泛型方法-get"); // 報(bào)錯(cuò) String res = t.get(); 編譯時(shí)類型參數(shù)發(fā)生替換(類型擦除),也就是編譯后的字節(jié)碼中的代碼應(yīng)該長(zhǎng)下面這樣: public class Test { private String res = null; public Test(String res){ this.res = res; } public String get(){ return this.res; } } Test t = new Test("泛型類-Test的泛型方法-get"); // 報(bào)錯(cuò)!類型擦除后,為什么調(diào)用該方法返回的類型是:Object ? String t = t.get(); 問題就出現(xiàn)在: Test t = new Test<String>(); // 報(bào)錯(cuò)!這邊返回的是 Object String res = t.get(); 我很郁悶 .... ,不能理解為什么提供了類型參數(shù)后進(jìn)行方法調(diào)用返回的不是提供的類型 String 而是 Object 類型? 然而,在如下場(chǎng)景中,結(jié)果卻正確了 // 結(jié)果正確 Test<String> t = new Test<>(); String res = t.get(); 這是為什么??
查看完整描述

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類型。。。

查看完整回答
反對(duì) 回復(fù) 2019-02-12
?
當(dāng)年話下

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();
查看完整回答
反對(duì) 回復(fù) 2019-02-12
?
揚(yáng)帆大魚

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)的工具類

查看完整回答
反對(duì) 回復(fù) 2019-02-12
  • 3 回答
  • 0 關(guān)注
  • 546 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)