将静态类字段重置为初始值

时间:2012-08-22 21:55:53

标签: java reflection

我注意到这个问题是针对单元测试的相关问题提出的,但我的问题是更一般的编程,我想要一些建议。

我正在编写一个软件,它使用Java Reflection来选择和改变作为特定库一部分的Fields的值。然后我运行与库相关的代码,记录该字段的效果,然后转到另一个字段。

问题是我认为初始化库代码的行为重置了运行所需的字段。事实证明它没有。而且我不知道哪些字段可能已经被更改(因为它们中有很多,库很大)。因此,我需要一种重置所有字段的方法,这些字段不涉及重新启动我的整个反射使用代码。

我在其他问题中看到ClassLoaders可以通过重新加载受影响的类来完成此操作。但是评论还说,这只有在你创建首先加载这些类的ClassLoaders时才有效。

任何人都可以建议在正常的Java执行中可靠地重置类的静态字段吗?

1 个答案:

答案 0 :(得分:0)

我会说,为每个类重写所有属性编写一个静态同步方法,当你在类加载器上调用它时同步(getClass()。getClassloader())