Сделать это приватное перечисление статическим или нет? - PullRequest
17 голосов
/ 14 сентября 2011

В классе мне нужно определить различные действия, которые передаются в метод.Теперь все экземпляры могут безопасно делиться этим действием, поэтому я подумал, что могу безопасно сделать перечисление статическим.

Но почти во всех примерах, которые я видел, вложенное перечисление никогда не становится статичным.Итак, какой способ определения вложенного (частного) перечисления является предпочтительным?Действительно ли имеет смысл не делать это статичным?

public class MyClass {
    private static enum Action {
        READ("read"),
        WRITE("write");

        final String value;

        Action(String value) {
            this.value = value;
        }

        String getValue() {
            return value;
        }
    }

    // attributes, methods, constructors and so on
}

Ответы [ 4 ]

37 голосов
/ 14 сентября 2011

В спецификации языка Java , раздел 8.9 , говорится:

Вложенные типы перечислений неявно статичны.Допустимо явно объявлять вложенный тип перечисления как статический.

Так что вы можете, но не обязаны, и это не будет иметь никакого значения.Лично я не думаю, что я буду беспокоиться, поскольку это все равно неявно.

4 голосов
/ 14 сентября 2011

Если перечисление является членом класса, оно неявно статично

4 голосов
/ 14 сентября 2011

Вложенные типы перечислений неявно статичны:)

1 голос
/ 02 апреля 2018

Поскольку enum по своей природе статичен, в использовании статического ключевого слова в enum нет необходимости и нет никакой разницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...