0

我有一个需要“插件”接口的 Java 项目。我正在考虑加载某种具有默认方法的类文件,例如initialize()shutdown()在将类加载到应用程序后将调用该类文件。这是这样做的方法吗?我将如何解决这个问题?

4

5 回答 5

3

查看Class类,特别是forName方法,它允许您按名称引用类。路径中的任何类都可以这样加载。我不知道是否可以重新加载。

在任何情况下,您想要动态加载的每个类都必须实现您的自定义AddOn接口,从而实现initializeand shutdown

于 2009-05-18T19:30:35.437 回答
1

如果你看一些更复杂的东西,你可以试试:http: //jpf.sourceforge.net

... JPF 提供了一个动态发现和加载“插件”的运行时引擎。插件是一个结构化组件,它使用“清单”向 JPF 描述自己。...

于 2009-05-18T20:45:07.237 回答
1

首先,你需要一个ClassLoader; 您可以使用 获取当前的getClass().getClassLoader(),但是您的插件类必须在类路径中。您可能想要创建一个自定义类加载器来搜索您的插件目录。

一旦你得到了ClassLoader,你就可以用它来加载一个类。这给了你一个Class对象;然后,您可以使用反射来调用该initialize()方法(如果存在)。

于 2009-05-18T19:31:42.860 回答
0

另一个实现插件的好方法是java.util.Serviceloader。看看javadocs,他们解释了原理。

于 2009-05-18T19:34:15.477 回答
-1
public class SomeClass { 
    static {
        System.out.println("Being called with the class is loaded");
        initialize();
    }
    static void initialize(){}
}

那是你的问题吗?

于 2009-05-18T19:28:32.523 回答