課程
/后端開發
/Java
/反射——Java高級開發必須懂的
為什么啊
2014-11-26
源自:反射——Java高級開發必須懂的 1-1
正在回答
肯定不能這么用
Foo foo = new Foo();
Class<?> c = foo.getClass();
foo = c.instance();
這么用就死循環了,而且一點意義就沒有。
這些只是舉個例子,可以得到一個對象的Class對象,也可以從一個Class對象轉換成一個具體對象。
(thinking?in?java 4th?p319)newInstance是實現虛擬?構造器的一種方法,(虛擬構造器:允許你不知道確切類型,但是你必須要正確的創造自己)而c1,c2,c3僅僅只是Class類的引用,編譯器不具備任何更多信息,只有在創建新實例的時候會得到Object引用(注意?是Object引用),你要想用這個引用那你必須要向下轉型啦,就是這里的強制類型轉換。。
轉型是為了得到更準確的信息。
例如人是動物,狗也是動物。 但是你要表示人的話,你還是要把動物轉成人。
我覺得可以這樣理解,你說newInstance到底返回什么才能讓所有的類都可以這樣去實例化呢?那就需要所有類的父類對不對,那個所有類的父類就是Object,所以返回回來的是Object,那么這樣的話就需要轉換類型了,而你說的如果設計的人本身就不知道你有Foo這個類,所以他當然不會返回Foo這個類型。
c1.newInstance()這個方法的返回值是Object類型,所以需要進行強制類型轉換。
c1的類型是Class,你在仔細看看視頻
舉報
反射,Java高級開發必須要懂的知識點,學好Java高級課程的基礎
3 回答Foo foo = (Foo)c1.newInstance()這個例子
2 回答反射那一課里,c1.newInstance()為什么要強制類型轉化為Foo?
3 回答為什么c1 or c2 or c3不是要實例兩下才能得到Foo類的對象?
1 回答c2已經是通過Foo類的實例對象創建的,那么用c2再創建Foo的實例有什么意義?
1 回答為什么使用newInstantce()創建新對象時,需要強制類型轉換?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-07-30
肯定不能這么用
Foo foo = new Foo();
Class<?> c = foo.getClass();
foo = c.instance();
這么用就死循環了,而且一點意義就沒有。
這些只是舉個例子,可以得到一個對象的Class對象,也可以從一個Class對象轉換成一個具體對象。
2015-05-05
(thinking?in?java 4th?p319)newInstance是實現虛擬?構造器的一種方法,(虛擬構造器:允許你不知道確切類型,但是你必須要正確的創造自己)而c1,c2,c3僅僅只是Class類的引用,編譯器不具備任何更多信息,只有在創建新實例的時候會得到Object引用(注意?是Object引用),你要想用這個引用那你必須要向下轉型啦,就是這里的強制類型轉換。。
2015-01-25
轉型是為了得到更準確的信息。
例如人是動物,狗也是動物。 但是你要表示人的話,你還是要把動物轉成人。
2014-12-07
我覺得可以這樣理解,你說newInstance到底返回什么才能讓所有的類都可以這樣去實例化呢?那就需要所有類的父類對不對,那個所有類的父類就是Object,所以返回回來的是Object,那么這樣的話就需要轉換類型了,而你說的如果設計的人本身就不知道你有Foo這個類,所以他當然不會返回Foo這個類型。
2014-11-26
c1.newInstance()這個方法的返回值是Object類型,所以需要進行強制類型轉換。
2014-11-26
c1的類型是Class,你在仔細看看視頻