Java静态初始化器和反射

时间:2012-03-12 07:42:20

标签: java reflection

使用java reflection我注意到所有类在反射目标时运行其静态构造函数。有什么方法可以强制这些静态构造函数返回或根本不运行它们吗?

2 个答案:

答案 0 :(得分:7)

没有。一旦类加载器加载并初始化类,就会调用静态初始化程序。

答案 1 :(得分:0)

我添加了我的答案,因为我认为Bozho的答案现在太短了;)

Reflection可以初始化一个类,只加载一个类不会初始化它。例如,从静态字段请求值可确保在获得实际值之前调用静态初始化程序。只有获得该领域通常不会。因此,如果您的反射代码导致执行静态初始化程序并且您确实需要完全执行它,那么就无法阻止调用这些初始化程序。如果你想避免它们被调用,你必须改变你所做的反射。