一般来说,如何编写程序以适应modding或插件?每个方法都包含其他行为吗?我所有的搜索都是为自己编写插件和mod的资源;在编写系统时我找不到任何东西。关于java,如何在不使用反射的情况下将逻辑的内部部分暴露给其他系统?
答案 0 :(得分:0)
执行此操作的一种方法是创建自己的ClassLoader,该类可以从不在系统类路径上的指定位置加载类。 (如果它在系统类路径上,系统ClassLoader将首先找到类,并且您无法卸载它们。)创建实例需要一些反思,但一旦创建它们就可以对待就像任何其他情况一样。
这是有效的,因为虽然只有自定义ClassLoader知道这些实例的实际类,但它从系统ClassLoader获得了它们的超类(您的插件类或接口)的定义。因此,系统ClassLoader加载的其他类(即程序的其余部分)可以通过超类引用那些动态创建的实例。
我已使用Brian's Clapper's utility library查找扩展插件类的类。