反射2 動態載入類

2021-07-24 06:05:48 字數 847 閱讀 6580

動態載入 和靜態載入的區別

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...