java - 在运行时修改类中的字段 - java

标签 java class dynamic reflection

我的问题是,是否可以将属性甚至方法注入(inject)到已经“类加载”的类中。我已经注意到,在java中动态添加属性并不是很简单,每个人都说你应该使用Map( add property for a object dynamicly )。

有没有更好、“更干净”的方法来在运行时更改类。我读过一些有关 ASM 的内容,但我不知道 ASM 使用的访问者模式是否是最佳使用方式。

万一ASM处理这个问题的最好方法是,除了 ASM 网站 ( http://download.forge.objectweb.org/asm/asm4-guide.pdf ) 上提供的文档之外,是否还有任何文档

最佳答案

一旦 JVM 加载了类,就无法对其进行修改。

最好的办法是修改类,然后在不同的类加载器中加载新的副本...。您最终将得到该类的两个版本(具有不同的运行时类型!)。该类的第一个版本的任何实例都不会具有新的字段、方法等。

我的建议...不要这样做。想出另一种方法来实现您在这里实际尝试做的事情。或者,如果动态修改类对于您的应用程序至关重要,请考虑使用更动态的语言。

关于java - 在运行时修改类中的字段 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43288730/

相关文章:

java - 套接字异常 : Connection closed by remote host when pushing to producation destination

c++ - 类类型重定义错误

c++ - 我需要以一种可以从循环中调用构造函数的方式来组织我的类

c - 如何在 C 中使用动态多维数组?

java - 如何在java中创建帮助系统

java - 使用 HashSet 字段解码响应实体的 Jersey 问题

谁能解释一下用 C 语言实现动态堆栈的输出

javascript - 如何在谷歌表格中制作宏动态?

java - 当有人重写抽象方法时,我可以强制保护它们吗?

java - 类静态初始化 block 内的类使用