2009-05-18 51 views
0

我有一個需要「addon」接口的Java項目。我正在考慮加載一些類文件,這些類文件具有默認方法,如initialize()shutdown(),這些類文件將在類加載到應用程序後調用。這是做到這一點的方式嗎?我將如何處理這個問題?包含Java類並在運行時運行它們

+0

你問動態加載類或定義一個類的初始化行爲? – 2009-05-18 19:32:07

+0

動態加載類。 – Baversjo 2009-05-18 19:38:44

回答

3

查看Class類,特別是forName方法,該方法允許您按名稱引用類。路徑中的任何類都可以像這樣加載。是否可能重裝我不知道。

在任何情況下,您想要動態加載的每個類都必須實現您的定製AddOn接口,從而實現initializeshutdown

-1
public class SomeClass { 
    static { 
     System.out.println("Being called with the class is loaded"); 
     initialize(); 
    } 
    static void initialize(){} 
} 

這是你的問題嗎?

+0

不錯:)但是我怎樣才能從文件加載和運行一個類?該類不會隨應用程序一起提供,用戶將「下載」插件並將其添加到「插件」文件夾中。應用程序將在啓動時加載所有插件。 – Baversjo 2009-05-18 19:31:58

+0

Yeap。我其實並沒有完全理解你的問題。 Class.forName幾乎是要走的路。 – OscarRyz 2009-05-18 20:24:10

1

首先,您需要一個ClassLoader;您可以使用getClass().getClassLoader()獲得當前版本,但是您的插件類必須位於類路徑中。您可能需要創建一個自定義類加載器來搜索您的插件目錄。

一旦你得到了ClassLoader,你可以使用它load a class。這給你一個Class對象;如果存在,則可以使用反射來調用initialize()方法。

1

如果你看更復雜的東西,你可以試試:http://jpf.sourceforge.net

... JPF提供了一個動態發現並加載「插件」的運行時引擎。插件是一個結構化的組件,它使用「manifest」向JPF描述自己。 ...

相關問題