Java反射(二) Class的動態載入

2021-08-04 03:47:15 字數 707 閱讀 8163

1、類的載入分為靜態載入和動態載入

靜態載入:編譯時刻載入類

動態載入:執行時刻載入類

2、靜態載入與動態載入的區別

靜態載入:所有new建立的物件都是靜態載入,不管用不用得到在編譯時只要有乙個類報錯就會導致整個程式無法執行,請看如下**:

class  office

if("excel".equals(args[0]))

}}

假如 boy 或者girl不存在編譯肯定通不過,看起來似乎很正常,但當我們寫功能**時,實際上我們可能用不到word或者excel,就因為word或者excel功能不存在,從而導致了整個**無法編譯通過,其它所有功能都無法使用,那要怎麼解決這個問題呢?

動態記載:上文我們提到過的class.forname("類的全稱")就是一種動態載入型別,動態載入的好處就是執行時才載入,如上面**需要用到那個功能,假如採用動態載入,只需要所有功能實現乙個統一的介面,用到哪個功能才會載入哪個功能,其它沒用到的功能就算有錯誤或不存在也不影響其它功能的使用。如下**,假如word和excel都實現了乙個叫officefunction的介面

class  office

catch(exception e)

}}

只要載入進來的類都實現了officefunction統一介面,怎麼擴充套件都不需要去改**,直接就能載入進來,很方便功能公升級。

Java 動態載入class 並反射呼叫方法

反射方法 public static void main string args throws exception 建立類載入器 class cls loader.loadclass com.pactera.util.updatetest 載入指定類,注意一定要帶上類的包名 object obj c...

Java反射 獲取Class及Class對應資訊

1.獲取構造器 constructor getconstructor class.parametertypes 返回 public 指定形參的 constructor getconstructors 返回 public 所有的constructor getdeclaredconstructor cl...

java反射之獲取Class物件

一 非基本資料型別 1 呼叫靜態方法class.forname string classname 引數為完整的類名,包括包的名字。class.forname p1.person p1是包名,person是類名 class.forname oracle.jdbc.driver.oracledriver...