Я проверил прямые ссылки Во время инициализации поля и этого ответа от @assylias, но до сих пор я не получил ответа на почему.
Почему статический блок может присвоить статическую переменную, объявленную после него, но не может НЕ получить к ней доступ?
class Parent {
static {
i = 2; // valid
// can only assign new value to it instead of accessing it?
// System.out.println(i); // invalid - compile-error
}
static int i = 0;
static {
i = 3; // valid
}
}
Это связано с тем, что значение еще не инициализировано, поэтому мы просто явно запрещаем вам его использовать? или есть что-то связанное с безопасностью, которого я не знаю?
обновлен
это не дубликат той проблемы, о которой идет речь
Почему этого не происходит при доступе с имя класса?
Этот вопрос о том, почему у нас есть этот дизайн? для чего?
compile error
, как уже упоминалось @Lino, поэтому вы просто не можете получить байт-код - person Hearen   schedule 19.03.2019duplication
проблемы - person Hearen   schedule 19.03.2019