Во время игры с самоанализом, я нашел интересную ситуацию, когда:Eclipse, и Println, кажется, не согласны по стоимости динамически установленного частного конечного статического поля
- в Eclipse отладчик подсказке отображается
true
- Println печатает
false
(примечание выход на вкладке Console):
Я стараюсь чтобы установить значение поля 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 является постоянной, он мог быть встроен. – Henry