亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么要Foo類型轉換呢 ?本來c1.newInstance()就是Foo類的對象,那么Foo foo不也是Foo的嗎 都一樣的類型為什么要轉換呢 ?求大神解釋啊@

為什么啊

正在回答

6 回答

肯定不能這么用

Foo foo = new Foo();

Class<?> c = foo.getClass();

foo = c.instance();

這么用就死循環了,而且一點意義就沒有。

這些只是舉個例子,可以得到一個對象的Class對象,也可以從一個Class對象轉換成一個具體對象。

0 回復 有任何疑惑可以回復我~

(thinking?in?java 4th?p319)newInstance是實現虛擬?構造器的一種方法,(虛擬構造器:允許你不知道確切類型,但是你必須要正確的創造自己)而c1,c2,c3僅僅只是Class類的引用,編譯器不具備任何更多信息,只有在創建新實例的時候會得到Object引用(注意?是Object引用),你要想用這個引用那你必須要向下轉型啦,就是這里的強制類型轉換。。

4 回復 有任何疑惑可以回復我~

轉型是為了得到更準確的信息。

例如人是動物,狗也是動物。 但是你要表示人的話,你還是要把動物轉成人。

1 回復 有任何疑惑可以回復我~

我覺得可以這樣理解,你說newInstance到底返回什么才能讓所有的類都可以這樣去實例化呢?那就需要所有類的父類對不對,那個所有類的父類就是Object,所以返回回來的是Object,那么這樣的話就需要轉換類型了,而你說的如果設計的人本身就不知道你有Foo這個類,所以他當然不會返回Foo這個類型。

4 回復 有任何疑惑可以回復我~

c1.newInstance()這個方法的返回值是Object類型,所以需要進行強制類型轉換。

1 回復 有任何疑惑可以回復我~

c1的類型是Class,你在仔細看看視頻

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么要Foo類型轉換呢 ?本來c1.newInstance()就是Foo類的對象,那么Foo foo不也是Foo的嗎 都一樣的類型為什么要轉換呢 ?求大神解釋啊@

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號