【发布时间】:2017-02-28 22:29:37
【问题描述】:
在玩自省时,我发现了一个有趣的情况:
- Eclipse 的调试器工具提示显示
true - println 打印
false(注意控制台选项卡中的输出):
我正在尝试设置private final static 字段的值,我想我做错了吗?
这里到底发生了什么?
import java.lang.reflect.*;
public class Main {
private final static boolean VAR = false; // I want to dynamically set this to true
public static void main(String[] args) throws Exception {
Field field = Main.class.getDeclaredField("VAR");
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, true);
System.out.println(VAR);
}
}
【问题讨论】:
-
因为 VAR 是一个常量,它可以被内联。
标签: java eclipse static final introspection