動態載入 和靜態載入的區別
class.forname("類的全稱")
編譯時刻載入類是靜態載入類,執行時刻載入類是動態載入類。
package dog;
public class animal
if("cat".equals(args[0]))
}}
package dog;
public class dog
}
很顯然以上第一部分**是錯誤的,因為沒有dog類和cat類,編譯肯定錯誤。現在假設這樣一種情況,現在建立乙個dog類,並實現bark()方法。cat不作實現,這個程式依然編譯錯誤,不能執行。
但是實際應用情況下,我們不需要cat的相關功能,而dog相關功能是可以使用的,但是程式跑不起來,用什麼方式解決呢?——————這裡就可以用到動態載入。
反思:為什麼這個animal類還是錯的呢?因為new建立物件時,是靜態載入類,在編譯時刻就需要載入所有可能需要的類。
package dog;
public class animalbetter catch (instantiationexception e) catch (illegalacces***ception e)
} catch (classnotfoundexception e)
}}
這一段**就不會在編譯的時候出錯,只有在執行的時候才會出錯,若是指定執行dog類中的方法也不會出錯,只有在執行cat類才會出錯。
以上就是動態載入和靜態載入的區別,對於功能型的類一般都使用動態載入,同時還會涉及到介面。
類的動態載入 2
1.通過new建立物件是靜態載入,如圖一,假如此時word類和excel類並不存在,office類是不可以通過編譯的,再假如乙個類中要對很多類進行例項化,都是通過new例項化的,那麼,但凡有乙個類出問題了,那麼整個大類就不會通過編譯。2.如圖二,我們使用的是動態載入類的方法,在編譯此類時,並不會載入...
Java反射機制總結學習 動態載入類
首先有如下 public class dynamicloadclass else if b equals args 0 class a class b 上面 可以正常編譯 執行。但是如果此時沒有b類,而且,我們的需求也不需要b類,就只用a類的方法就可以了,這個時候我們就需要main函式的 然後重新編...
反射 Reflect JVM類載入
概念 在程式執行的時候 動態的載入類和類的資訊。package com.qianfeng.reflects public class person public person string name,integer age,string add public string getname publi...