Как я знаю, Enum это абстрактный класс, я пишу Enum, то я javap команду, я получил:Java Enum является абстрактным классом, как создать свой собственный экземпляр
public abstract class com.tonyzhai.homework.TestEnum extends java.lang.Enum<com.tonyzhai.homework.TestEnum> {
public static final com.tonyzhai.homework.TestEnum a;
public static com.tonyzhai.homework.TestEnum[] values();
Code:
0: getstatic #2 // Field $VALUES:[Lcom/tonyzhai/homework/TestEnum;
3: invokevirtual #3 // Method "[Lcom/tonyzhai/homework/TestEnum;".clone:()Ljava/lang/Object;
6: checkcast #4 // class "[Lcom/tonyzhai/homework/TestEnum;"
9: areturn
public static com.tonyzhai.homework.TestEnum valueOf(java.lang.String);
так, он не может конкретизации, мой вопрос в том, что абстрактный должен быть не имеет экземпляра, поэтому, если использование Enum реализует шаблон Singleton, как он создает свой собственный экземпляр?
Это помогло бы, если бы вы указали исходный код Java ... Простой enum не создает генерации абстрактного класса, насколько мне известно. –
Почему вы смотрите на выход дизассемблера java? Что такое исходный код? –
экземпляры Enum в Java всегда создаются при их объявлении (это когда вызывается конструктор). –