我偶然发现了一位朋友发给我的一个片段。它有一个非常奇怪的行为。我尝试用谷歌搜索代码,看看我是否在互联网上找到了一些东西,但没有运气。我无法联系到我的朋友,所以我很好奇它在做什么。
public class Test {
public static void main(String[] args) throws MalformedURLException {
System.out.println(Boolean.TRUE); //This prints false
}
static {
try {
Field value = Boolean.class.getDeclaredField("value");
value.setAccessible(true);
value.set(Boolean.TRUE, value.get(Boolean.FALSE));
} catch (Exception e) {
throw new AssertionError(e);
}
}
}
我认为,就像它被声明为静态的那段代码一样,它将首先运行该main
方法,并且在该静态代码内部正在更改所有Boolean
实例的值(?)。我不知道,我需要专家意见来证实这一点。