Если вы объявили enum следующим образом:
enum Suit {SPADES, HEARTS, CLUBS, DIAMONDS}
Компилятор Java синтетически сгенерировал для вас следующий класс:
final class Suit extends java.lang.Enum {
public static final Suit SPADES;
public static final Suit HEARTS;
public static final Suit CLUBS;
public static final Suit DIAMONDS;
private static final Suit[] $VALUES;
public static Suit[] values();
public static Suit valueOf(java.lang.String);
private Suit();
}
Нет намерения создавать другие экземпляры этого класса, отличные от тех статических полей, которые уже определены в нем (как вы могли бы сделать вывод из его частного конструктора), но, что наиболее важно, и, как упоминалось в принятом ответе, внутренний класс не может иметь статические члены ( JLS §8.1 .3. Внутренние классы и экземпляры Enclosing Instances ), и поскольку класс синтетического enum делает это, он делает его неприемлемым как внутренний класс.