一般動態加載類都是直接用Class.forName()這個方法,但這個方法只能創建程序中已經引用的類,並且只能用包名的方法進行索引,比如Java.lang.String,不能對一個.class文件或者一個不在程序引用裏的.jar包中的類進行創建。但使用URLClassLoader就可以直接根據創建一個單獨的.class文件,並且每當重新載入後並實例化後都是最新的方法。類似於jsp,當你在eclipse中改了一個jsp並且存儲後,只要刷新頁面就可以得到最新的結果而不用重新啓動服務器。
URLClassLoader是在java.net包下的一個類。他的構造函數輸入參數需要輸入1個URL數組。假設我們有一個編譯後的class文件在C:/URLClass/testClass.class中,URLClassLoader進行加載 ,其中有個方法爲test,我們需要動態加載這個類並且運行test方法
- File xFile=new File("C:/URLClass");
- URL xUrl= xFile.toURL() ;
- URLClassLoader ClassLoader=new URLClassLoader(new URL[]{ xUrl });
- Class xClass=ClassLoader.loadClass("testClass");
- Object xObject=xClass.newInstance();
- Method xMethod=xClass.getDeclaredMethod("test");
代碼中,省略了try catch部分,請自行添加 。 在你的工程運行前,完全可以不用引入testClass這個類,通過在運行時的動態加載就可以運行其中的方法。