所以,我是java.lang.reflect东西玩,并试图制造类似this。这里是我的问题(可能是BUG):
我的方法将字段设置为true的代码:
private static void setFinalStatic(Field field, Object newValue) throws Exception
{
field.setAccessible(true);
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, newValue);
}
在那里我打印的代码:
setFinalStatic(Boolean.class.getField("FALSE"), true);
System.out.format("%s\n", false); //prints true
System.out.println(false); //prints false
System.out.format("%s\n", Boolean.FALSE); //prints true
System.out.println(Boolean.FALSE); //prints true
System.out.println(Boolean.FALSE == false); //prints false
System.out.format("%s\n", Boolean.FALSE == false); //prints true
当你使用它System.out.format("%s", false)返回“真”,如预期
但是当你使用System.out.println(false)它打印“假”。
当我尝试这样做System.out.println(Boolean.FALSE == false)它印有“假”。
你请你解释一下吗?