1

是否有一种简单的方法可以通过反射在 Java 中指定字段是否应该是瞬态的,类似于如何使用 setAccessible() 设置字段的可访问性标志?

4

2 回答 2

1

反射本身不能改变代码。

Java 代理应该允许您在加载类时重写它。

serialPersistentFields在序列化机制缓存类数据之前,您可以使用反射来改变它是否存在(不太可能)。您可以以高度特定于版本的方式使用反射来更改序列化机制内的数据。

于 2010-08-02T02:14:16.653 回答
0

我在 Java API 中看不到任何直接的方法来执行此操作,但是可以使用 JRebel 或 LiveRebel http://www.zeroturnaround.com/jrebel/comparison/之类的方法。您可以使用http://asm.ow2.org/中的 ASM 之类的东西在相关字段上使用瞬态修饰符重写字节码。然后触发 JRebel/LiveRebel 替换类的运行时版本。

我没有尝试使用 ASM 自动执行此操作,但我已经使用 JRebel 和 IntelliJ IDEA 在交互式开发过程中成功执行此类更改。

于 2010-08-02T01:38:46.870 回答