此代碼不會編譯,因爲存在對靜態字段的非法引用。爲什麼這個枚舉代碼是一個非法引用靜態字段?
public enum Foo {
A,
B;
private Foo[] foos = new Foo[] { Foo.A };
}
您不應該能夠從非靜態字段初始值設定項訪問靜態字段嗎?例如:
public class Foo {
static int A;
private int[] foos = new int[] { Foo.A };
}
這個編譯好。
注意,使第一個示例中的foos
靜態編譯。