已采納回答 / 憊懶sloth
反射是一種機制,通過加載的類來獲取相應的對象,方法和屬性,是jvm本身來實現的策略模式是設計模式,提供多種情況下的統一解決方案,是由程序猿來決定的二者不具有可比性
2015-12-18
已采納回答 / 陽少兮_s
以下所說的只是自己的理解。如果有不對的情況請大家指正我。一般情況下我們都會使用new Foo().print();這種情況下是我們肯定使用Foo的對象的時候我們會這么用。但是當我們需要在運行時才能確認哪個類的print方法時會用到反射。比如現在有個方法,根據我們傳遞的類名來調用方法public void print(String className) {? Class<?> c = Class.forName(className);?......}這樣,只要你傳入正確的類名,不僅能調用Foo類...
2015-07-28
已采納回答 / 好幫手慕珊
這個其實用不用靜態方法都可以,這里面之所以使用靜態方法,是覺得該方法就是一個常用的方法,不屬于某個對象特別的行為。比如求數學絕對值的方法,Math.abs(9),這個abs方法就是一個靜態方法,它就是求絕對值這樣一個運算,一般我們把這種方法可以定義為靜態。再舉一個例子,Cat類,里面有一個eat()方法,指的是某個具體的Cat對象在eat(),這時就不適合使用靜態方法了。
2014-12-30
已采納回答 / 偌顏寧
Java反射機制主要提供了以下功能:在運行時判定任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判定任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。
2014-11-26
最贊回答 / 比利海靈頓
(thinking?in?java 4th?p319)newInstance是實現虛擬?構造器的一種方法,(虛擬構造器:允許你不知道確切類型,但是你必須要正確的創造自己)而c1,c2,c3僅僅只是Class類的引用,編譯器不具備任何更多信息,只有在創建新實例的時候會得到Object引用(注意?是Object引用),你要想用這個引用那你必須要向下轉型啦,就是這里的強制類型轉換。。
2014-11-26
已采納回答 / 好幫手慕珊
如果一個java文件只有一個類的時候,這個類可以不用public修飾,文件名就是類名。class前沒有public默認是包訪問權限,也就是這個類只能被同一個包中的類訪問。當一個java文件中有多個類時,只能有一個類是public修飾,并且該類作為java文件的文件名。
2014-11-26