Анализ какого-то странного сценария в следующем статическом блоке:
static {
System.out.println("Inside Static Block");
i=100; // Compilation Successful , why ?
System.out.println(i); // Compilation error "Cannot reference a field before it is defined"
}
private static int i=100;
В то время как тот же код работает нормально при использовании:
static {
System.out.println("Inside Static Block");
i=100; // Compilation Successful , why ?
System.out.println(MyClass.i); // Compiles OK
}
private static int i=100;
Не знаете, почему переменная инициализации не нуждается в переменном доступе с использованием имени класса, в то время как SOP требует?