Java - Разница между приватным и закрытым для пакета конструктором перечисления
В последнее время я довольно часто использую перечисления. Так что мне интересно...
Есть ли разница между приватным конструктором Enum и конструктором enum без какого-либо модификатора видимости (package-private)?
2 ответа
Согласно документам Java
Конструктор для типа enum должен быть закрытым или закрытым для доступа.
но в соответствии с JLS
Если модификатор доступа не указан для конструктора типа enum, конструктор является закрытым.
Так что нет никакой разницы между пакетом private и private.
Конструктор для перечислений неявно private
так же, как методы для интерфейсов и аннотаций неявно public abstract
, По умолчанию используется пакет local для членов класса.
Кстати, перечислимые классы неявно final
и вложенные перечислимые классы неявно static
,
Старые конструкции, как правило, позволяют добавлять неявные модификаторы, но более новые конструкции не позволяют вам этого сказать. например, перечисления являются окончательными, но вы не можете добавить final
перечислению.