可以使用反射式编程来更新程序吗?例如,如果我写了一个Java游戏,我可以添加新的DLL,这些DLL可能包含例如新角色和具有新行为的新型武器等。
答案 0 :(得分:1)
Java动态类加载将允许您这样做。 This is a good tutorial
答案 1 :(得分:1)
将 OSGI 作为具有终身管理功能的模块化系统。存在几个像equinox这样的OSGi容器。可以动态加载称为bundle的jar模块,依此类推。并替换为较新的版本。这将提供替换和添加功能的功能。
否则,如果Java WebStart (JNLP)仍然存在:它通过互联网提供更新机制。
可以使用(URL-)ClassLoaders动态加载一个类,比如来自“features123”jar。该类可以实现一些接口(不添加到jar!)。
答案 2 :(得分:0)
好的,dll不是通常在Java中注册/取消注册对象的好方法。因为它是“共享”系统本机库。注册一个dll时,它会被注册一次,无法卸载它。
当然你可以通过反射api添加新的原生dll。请注意不要更新现有的并且不要更改方法/功能签名。它应该像插件一样。不应该打扰以前的dll并替换它们。