为什么Enum构造函数不能具有protected或public访问修饰符

Pra*_*mar 2 java enums

枚举构造函数必须是私有或包默认,并且不允许使用protected或public access修饰符.为什么这样

JB *_*zet 5

因为根据定义,枚举具有一组固定的实例,这些实例在枚举本身中声明和构造.因此,从枚举类本身外部使用构造函数是没有意义的.

而AFAIK,一个枚举构造函数总是,显式或隐含的,私有的.


Oli*_*rth 3

来自Java 教程

枚举类型的构造函数必须是包私有或私有访问。它自动创建在枚举体开头定义的常量。您不能自己调用​​枚举构造函数。

能够创建枚举的新实例是没有意义的,因此该语言阻止您这样做!

  • 并且枚举不能替代静态最终字符串。枚举是具有字段和方法的类。他们可以实现接口。 (2认同)