在 C 中,我可以通过让共享库实现以下接口(interface)来编写插件:
extern "C" int initialize(SomeArgument * state);
extern "C" int shutdown(SomeArgument * state);
显然,这是一个非常的高级界面,但我认为它表达了要点。我听说反射的一个很好的用途是编写插件,但为什么这会比我这里的更好呢?使用这样的界面具有以下优点:
- 更快(反射并不快,无论是查找方法还是间接调用)
- 内存(反射有内存开销)
- 直接(插件的入口/导出点直观明显)
我是不是错过了什么?
最佳答案
我能想到的主要优点是,您可以使用包含要在运行时动态加载的插件
的属性文件(通过反射)。
或者您可以扫描特定目录中的插件并(尝试)通过反射自动加载/实例化它们。
当然,这并不意味着这些插件不应该实现特定的接口(interface)。
关于java - 插件的反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10591398/