Это потому, что enum is Java содержит фиксированные постоянные значения. Поэтому нет смысла иметь открытый или защищенный конструктор, так как вы не можете создать экземпляр enum.
Также обратите внимание, что внутренне enum преобразуется в класс, как показано ниже.
enum Color {
RED, BLUE, YELLOW;
}
Это будет внутренне преобразовано в:
public final class Color {
private Color() {}
public static final Color RED = new Color();
public static final Color BLUE = new Color();
public static final Color YELLOW = new Color();
}
Итак, каждая константа перечисления представлена как объект типа enum. Поскольку мы не можем создавать объекты enum явно, следовательно, мы не можем вызвать конструктор enum напрямую.