Этот код не скомпилируется, потому что в нем есть недопустимая ссылка на статическое поле.
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
статическим, то компилируется.