Подтвердить что ты не робот

Сделать это частным enum статическим или нет?

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

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

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
}
4b9b3361

Ответ 1

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

Вложенные типы перечислений неявно статичны. Разрешено явно объявлять вложенный тип enum статическим.

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

Ответ 2

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

Ответ 3

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