Question: why enum constructor is private?
Answer: You cannot actually have a public enum constructor. You need this constructor to be private, because enums define a finite set of values (for example EN_US, EN_UK, FR_FR, FR_BE). If the constructor was public people could potentially create more values (for example invalid/undeclared values such as XX_KK, etc).