В нашем приложении используется код инициализации, который зависит от статического кода заказа, и мне интересно, будет ли этот порядок согласован для всех JVM.
Вот пример того, что я имею в виду:
public class Main {
static String staticVar = "init_value";
public static void main(String[] args) {
System.out.println(A.staticVar);
staticVar = "mainValue";
System.out.println(A.staticVar);
}
}
public class A {
static String staticVar = Main.staticVar;
}
даст:
init_value init_value
и
public class Main {
static String staticVar = "init_value";
public static void main(String[] args) {
// System.out.println(A.staticVar);
staticVar = "mainValue";
System.out.println(A.staticVar);
}
}
public class A {
static String staticVar = Main.staticVar;
}
даст (в моей среде):
mainValue
Подводя итог, во всех JVM статический код всегда выполняется, когда мы используем класс в первый раз?