Java – 私有和包私有枚举构造函数之间的区别

最近我经常使用Enumerations。 所以我想知道……

私有Enum构造函数和枚举构造函数与任何可见性修饰符(package-private)之间是否有任何区别?

根据java 文档

枚举类型的构造函数必须是包私有或私有访问。

但是加入JLS

如果没有为枚举类型的构造函数指定访问修饰符,则构造函数是私有的。

所以包私有和私有没有区别。

枚举的构造函数是隐式private ,就像接口和注释的方法是隐式public abstract 。 对于类成员,默认为package local。

BTW枚举类是隐式final ,嵌套的枚举类是隐式static

较旧的构造倾向于允许您添加隐式修饰符,但较新的构造不允许您说。 例如,枚举是最终的,但你不能将final添加到枚举。