大约一年前,我偶然发现了 Java 中的一个很好的特性,但我这辈子都找不到了。
通过一些神奇的接口(interface),显然可以声明一些在运行时可替换的类或函数。
我找到了一个很好的示例指南,有人运行了一个打印特定消息的简单小程序,然后他使用我不再记得的方法更新了程序,突然间程序用新的打印功能替换了旧的打印功能。
我曾尝试通过 Java API 来激发我的内存并进行谷歌搜索,但没有成功。这里有人可以帮忙吗?
最佳答案
各种应用容器都可以做到这一点。
基本上您需要在新的 ClassLoader
中重新加载该类(除非您是在调试器下进行此操作,在这种情况下有完全不同的 API 可用)。
在我看来,这种事情很少值得麻烦:设计一切以使其可以重新加载比设计它以使其可以在新进程中完全重新启动要困难得多。如果进程中只加载了一个版本,也更容易确定到底运行的是什么代码。
能够进行演示是一件很不错的事情,但对于大多数应用程序来说,这是不值得的。当然,一切都在我看来:)
请注意,一个值得注意的异常(exception)是无需重新启动容器即可重新加载 Web UI 层的能力:这可以让生活变得很多更轻松。
关于java - 在运行时更新 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079280/