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

Статические конечные методы в перечислении

Итак, я просмотрел google и SO, я не могу найти пример или объяснение: Какова цель методов static final в enum?

Что я понимаю:

  • Способы declare static могут быть доступны как функциональные/процедурные языки.
  • final означает, что вы не можете его переопределить. Невозможно изменить ссылку. Как отмечали ассирийцы в комментариях static, нельзя переопределить.
  • enum нельзя подклассифицировать, объяснил здесь.

Итак, что точка методов static final в enum, если она никогда не будет переопределена, поскольку не будет подкласса?

4b9b3361

Ответ 1

Сделав окончательный статический метод вы запретите его скрывать (только методы экземпляров могут быть переопределены) подклассом.

Так как перечисление не может быть подклассифицировано, окончание статического метода является излишним, но не запрещено.

Примечание: технически каждая константа enum, которая имеет тело класса неявно определяет анонимный класс, который расширяет перечисление. Но поскольку внутренние классы не могут объявлять статические методы, статический окончательный метод не мог быть скрыт в таком постоянном классе тела.

Ответ 2

Легко понять, почему методы static имеют смысл, поэтому я думаю, что вопрос касается модификатора final.

final здесь нецелесообразно, за исключением, возможно, сделать код немного легче читать, но не сильно.

Он похож на способ interface, который часто записывается как public void foo();, хотя члены интерфейса всегда общедоступны.

Ответ 3

В Java Типы перечислений используются для представления фиксированного набора констант и для его статического финала помогает его инициализация только один раз, одна копия для общего доступа для всех экземпляров, обращаясь к переменной с именем класса, и с окончательным ее больше похоже на чтение -только

Ответ 4

Когда вы объявляете экземпляры перечисления, вы можете переопределить методы enum, по существу экземпляры enum реализуются как (или думают) как подклассы. static методы не могут быть переопределены в любом случае, но импликация в OP и другие ответы, которые final являются излишними для enum, являются ложными.