Доступ к статическим полям в конструкторе enum запрещен компилятором. Исходный код ниже работает, он использует статическое поле:
public enum TrickyEnum
{
TrickyEnum1, TrickyEnum2;
static int count;
TrickyEnum()
{
incrementCount();
}
private static void incrementCount()
{
count++;
}
public static void main(String... args)
{
System.out.println("Count: " + count);
}
}
Вывод:
Количество: 2.
Но приведенный ниже код не работает, несмотря на небольшую разницу:
public enum TrickyEnum
{
TrickyEnum1, TrickyEnum2;
static int count;
TrickyEnum()
{
count++; //compiler error
}
public static void main(String... args)
{
System.out.println("Count: " + count);
}
}
Из моего поиска люди обычно утверждают, что проблема связана с порядком инициализации статических полей. Но первый пример работает, так почему разработчики Java запрещают второй пример? Он также должен работать.