Why Enum constructor can't have protected or public access modifier

enums, java

Solution

From the Java tutorial:

The constructor for an enum type must be package-private or private access. It automatically creates the constants that are defined at the beginning of the enum body. You cannot invoke an enum constructor yourself.

It doesn't make sense to be able to create new instances of an enum, so the language prevents you from doing so!

Problem

Enum constructors must be either private or package default, and protected or public access modifier is not allowed. Why so

Original source