【问题标题】:Enhancing a java object at runtime在运行时增强 java 对象
【发布时间】:2011-08-30 17:35:16
【问题描述】:

我知道使用支持代理的库(javassist、JDK 动态代理等)可以增强 以在运行时实现接口。

我的问题是:是否可以增强实例化的对象以在运行时实现接口(并同样提供适当的方法处理程序)。

【问题讨论】:

  • 您能描述一个这样做有帮助的用例吗?如果您必须这样做,我的建议是重新考虑您的设计。
  • 同意 - 例如,如果您尝试编写一个无需重新启动即可就地升级(或类似的东西)的应用程序,有更好的方法来处理这个问题。

标签: java proxy-classes dynamic-proxy javassist


【解决方案1】:

不,我们不能更改已经加载的类。而且我们不能替换加载的类(在类加载器中)。

如果你有可能机会

  • 使用自定义类加载器加载类
  • 卸载类加载器(也应该卸载类)
  • 使用新的类加载器实例再次加载修改后的类

但那是非常、非常黑的魔法……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2012-06-21
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多