Java - Разница между приватным и закрытым для пакета конструктором перечисления

В последнее время я довольно часто использую перечисления. Так что мне интересно...

Есть ли разница между приватным конструктором Enum и конструктором enum без какого-либо модификатора видимости (package-private)?

2 ответа

Решение

Согласно документам Java

Конструктор для типа enum должен быть закрытым или закрытым для доступа.

но в соответствии с JLS

Если модификатор доступа не указан для конструктора типа enum, конструктор является закрытым.

Так что нет никакой разницы между пакетом private и private.

Конструктор для перечислений неявно privateтак же, как методы для интерфейсов и аннотаций неявно public abstract, По умолчанию используется пакет local для членов класса.

Кстати, перечислимые классы неявно final и вложенные перечислимые классы неявно static,

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

Другие вопросы по тегам