Enum的初始化顺序和一般的类不同
public enum Color {
RED("Red"),
BLACK("Black"),
WHITE("White");
private static int field = initStaticField();
Color(String name) {
System.out.println("Constructor: " + name);
}
private static int initStaticField() {
System.out.println("satic field ");
return 0;
}
public static void main(String[] args) {
Color red = Color.RED;
}
}
Console:
Constructor: Red
Constructor: Black
Constructor: White
static field
public class NormalClass {
private static int field = initStaticField();
NormalClass() {
System.out.println("Constructor" );
}
private static int initStaticField() {
System.out.println("static field ");
return 0;
}
public static void main(String[] args) {
NormalClass c = new NormalClass();
}
}
Console:
static field
Constructor