Итак, я играл с java.lang.reflect
и пытался создать что-то вроде this .И вот моя проблема (возможно, ошибка):
Код моего метода для установки поля в 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)
, он возвращает «true», как и ожидалось
, но когда вы используете System.out.println(false)
, он печатает «false».
И когда я пытался это System.out.println(Boolean.FALSE == false)
напечатано «ложь».
Вы, пожалуйста, объясните это?