Я знаю, что перечисление
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();
}
Когда я пытался создать экземпляр enum (не класса), я получил ошибку времени компиляции как:
error: enum types may not be instantiated
Year y = new Year();
Как известно, частный конструктор делает класс несовместимым. И я думал, что компилятор предоставляет частный конструктор. Но снова я смутился, увидев, что мы можем определить конструктор для перечисления с модификатором по умолчанию и до сих пор не может создать объект типа enum.
enum Year
{
First, Second, Third, Fourth;
Year()
{
}
}
class Example
{
public static void main(String[] args)
{
Year y = new Year();
}
}
Мое сомнение в том, что, если речь идет не о конструкторах, то что делает enum в Java неинтересным?