2

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

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

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

我在其他问题中看到 ClassLoaders 可以通过重新加载受影响的类来做到这一点。但是评论还说,这只有在您首先创建了加载这些类的 ClassLoader 时才有效。

任何人都可以建议任何方法来可靠地重置普通 Java 执行中的类的静态字段吗?

4

1 回答 1

0

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

于 2012-08-26T14:49:09.663 回答