在运行时增强 java 对象

发布于 2024-12-02 04:20:57 字数 118 浏览 1 评论 0原文

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

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

I am aware that using proxy capable libraries (javassist, JDK dynamic proxies, etc) that it is possible to enhance a class to implement an interface at runtime.

My question is: is it possible to enhance an instantiated object to implement an interface at runtime (and likewise provide appropriate method handlers).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

莫相离 2024-12-09 04:20:57

不,我们不能更改已经加载的类。我们无法替换已加载的类(在类加载器内)。

则可能有机会

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

但这是非常非常黑魔法。 ..

No, we can't change a class that has already been loaded. And we can't replace a loaded class (within a classloader).

There may be a chance if you

  • load a class with a custom classloader
  • unload the classloader (should unload the class aswell)
  • load the modified class again with a new classloader instance

But that is very, very black magic...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文