Можно рассмотреть такой пример:
public enum A {
AAA {
public void i() {
System.out.println("Hi AAA");
}
},
BBB {
public void j() {
System.out.println("Hi BBB");
}
},
CCC;
public static void main(String[] args) {
System.out.println(A.AAA.getClass().getName());
System.out.println(A.BBB.getClass().getName());
System.out.println(A.CCC.getClass().getName());
}
}
Получаем:
com.home.A$1 - анонимный класс
com.home.A$2 - анонимный класс
com.home.A
т.е. создано 3 файла *.class
В конечном итоге, сам класс А - финальный и его нельзя расширять, но чтоб enum-ы могли реализовывать абстрактные методы, интерфейсы и как в примере выше, можно предположить, что внутри JVM разрешено наследоваться от enum-а.
UPD01:
После декомпиляции класс "A$1.class" с помощью
javadecompilers, получаем код, который подтверждает догадку насчет анонимных классов
static final class A
extends com.home.A {
A(String string2, int n2) {
super(string, n, null);
}
public void i() {
System.out.println("Hi AAA");
}
}