是否有一种简单的方法可以指定字段在带反射的Java中是否应该是瞬态的,类似于如何使用setAccessible()设置字段的可访问性标志?
答案 0 :(得分:1)
反射本身不能改变代码。
Java代理应该允许您在加载类时重写该类。
在序列化机制缓存类数据之前,您可以使用反射来更改serialPersistentFields
(如果它存在(不太可能))。您可以使用高度版本特定的方式使用反射来更改序列化机制中的数据。
答案 1 :(得分:0)
我无法在Java API中看到任何直接的方法,但可以使用JRebel或LiveRebel http://www.zeroturnaround.com/jrebel/comparison/之类的东西。您可以使用来自http://asm.ow2.org/的ASM之类的东西,在相关字段上使用transient修饰符重写字节码。然后触发JRebel / LiveRebel以替换类的运行时版本。
我没有尝试过使用ASM自动执行此操作,但是我已经使用JRebel和IntelliJ IDEA在交互式开发期间成功执行了这样的更改。