2015-05-05 3 views
5

См. Это link. Что касается перечислений, г-н Блох говоритВиды перечислений, как описано в «Эффективной Java» Джошуа Блоха

типы перечисления Java-классы, которые экспортируют один экземпляр для каждого константы перечисления через открытое статическое конечное поле.

Я прочитал документацию Enum класса но не было никакого публичного статического последнее поле, то как же приведенное выше утверждение справедливо и. Пожалуйста, объясни. Thanks

+2

Компилятор создает для вас публичное статическое конечное поле. Попробуйте декомпилировать класс с помощью javap. –

ответ

13

Создать Test.java файл и записать Test enum:

public enum Test { 
    Hello 
} 

компилировать класс: javac Test.java и использовать javap Test, чтобы получить скомпилированный класс:

public final class Test extends java.lang.Enum{ 
    public static final Test Hello; 
    public static Test[] values(); 
    public static Test valueOf(java.lang.String); 
    static {}; 
} 

и вы можете увидеть Test класс простирается от Enum и имеет поле public static final Hello.

3

Enum - базовый класс для всех перечислений. Он не содержит констант. То, что содержит константы, - это конкретные классы перечислений. См. Например, documentation for the enum Locale.Category. Он содержит публичные статические конечные поля для каждой константы перечисления: DISPLAY и FORMAT.

 Смежные вопросы

  • Нет связанных вопросов^_^