Java中调用插件类

Jos*_*ith 4 java plugins class

当类的名称在编译时未知时(例如,如果它是一个插件),我如何在 Java 中调用一个类。例如,用户从 GUI 中选择一个插件(Java 类),然后应用程序创建该类的新实例,并调用其方法之一(方法名称在编译时已知(例如“moduleMain”) ))。

感谢您的任何意见。

小智 5

这个问题的“旧式”解决方案是定义一个所有插件都必须实现的接口。然后使用Reflection加载该类并将其强制转换为接口。如果没有发生异常,您现在可以安全地从接口调用该方法。这种方法的缺点是该类必须在应用程序启动时在类路径上可用。

Java 世界中更“现代”和动态的插件方法是OSGI。Eclipse 使用 OSGI 作为其插件系统,并允许在运行时添加和删除插件。