我的问题是,是否可以将属性甚至方法注入(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/