I think you
can declare an enum constructor public, but it doesn't mean you can use it from outside the class - there's a special mechanism for enums that prevents it.
Edit: OK, apparently not

. As always, there's only one way to be sure...just tried it out, and it won't compile with a public constructor: "Modifier public not allowed here".
Since you can't create your own enums, a private contructor makes perfect sense. I must admit, I'm not sure why they bother allowing a package-access constructor, but I'm probably missing something.