我正在尝试将插件系统添加到我的应用程序中。我有一个插件必须扩展的抽象类。这个类提供了有用的方法,所以我真的需要它。问题是这些插件可以由任何人编写,所以我认为他们需要抽象类代码才能编译他们的代码。
我不想让创建插件的过程复杂化。有没有一种方法可以在不知道抽象类主体(仅了解其方法)的情况下编译代码?
提前致谢。
最佳答案
Is there a way to compile the code without know the abstract class body (only its methods)?
没有。为了编译声明为的类
class A extends B
您必须在源路径中包含源格式的 B
或在类路径中包含 .class 格式的 B
。
(如果只知道方法就足以编写插件,那么听起来更像是在寻找接口(interface)而不是抽象类。)
I don´t want to complicate the process of creating a plugin.
提供 B
的已编译 .class 文件完全不复杂,可能是这种情况下的最佳实践。
实际上,通过包含相关类和接口(interface)的 .jar 文件获得 API 可能是标准做法。
要清楚:
- 将与插件开发相关的类,编译并放入,比如
pluginapi.jar
- 分发 .jar 并告诉插件开发人员他们的插件应该编译,提供
pluginapi.jar
- 请插件开发人员为您提供
plugin.jar
(不一定包括pluginapi类) - 在您的应用程序中,确保存在插件 API 类,例如将它们包含在类路径中。
- 加载插件类。
关于java - 在没有父类主体的情况下用 Java 编译插件代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6056155/