是什么让java中的枚举不可实例化?
我知道一个枚举
enum Year
{
First, Second, Third, Fourth;
}
转换为
final class Year extends Enum<Year>
{
public static final Year First = new Year();
public static final Year Second = new Year();
public static final Year Third = new Year();
public static final Year Fourth = new Year();
}
当我尝试实例化枚举(不是类)时,我得到了编译时错误::
error: enum types may not be instantiated
Year y = new Year();
据我所知,私有构造函数使类不可实例化。我认为编译器提供了一个私有构造函数。但是,当我看到我们可以使用默认修饰符为枚举定义构造函数并且仍然无法创建枚举类型的对象时,我再次感到困惑。
enum Year
{
First, Second, Third, Fourth;
Year()
{
}
}
class Example
{
public static void main(String[] args)
{
Year y = new Year();
}
}
我的疑问是,如果它不是关于构造函数的,那么是什么让Java中的枚举不可实例化?