Вот код, который вызывает статический метод A.f() для класса, который еще не инициализирован. Может ли кто-нибудь объяснить поведение этого кода в терминах JLS?
class A {
final static Object b = new B();
final static int S1 = 1;
final static Integer S2 = 2;
static void f() {
System.out.println(S1);
System.out.println(S2);
}
}
class B {
static {
A.f();
}
}
public class App
{
public static void main( String[] args )
{
A.f();
}
}
Вывод:
1
null
1
2