63 votes

Private enum constructeur

Le constructeur pour cela `` est privé. Que cela signifie-t-il?

60voto

Dhruv Gairola Points 4448

Un constructeur privé autorise uniquement la construction d’objets à partir de la définition de classe. Étant un enum, il est facile de se confondre, donc je trouve généralement plus facile de penser à un enum comme une classe avec des caractéristiques spéciales. Donc, lorsque vous écrivez :

Fondamentalement, les paramètres

sera transmis au constructeur privé afin que l’enum puisse être instancié. Les constructeurs Enum doivent être privés.

48voto

Beez Points 693

De : http://download.oracle.com/javase/tutorial/java/javaOO/enum.html

Remarque : Le constructeur d’un type enum doit être package-private ou accès privé. Il crée automatiquement les constantes qui sont défini au début du corps de l’énum. Vous ne pouvez pas appeler un enum constructeur vous-même.

Vous ne pouvez pas réellement avoir un constructeur enum public.

10voto

JVerstry Points 12414

Vous avez besoin que ce constructeur soit privé, car les énumérations définissent un ensemble fini de valeurs (par exemple EN_US, EN_UK, FR_FR FR_BE). Si le constructeur était public, les personnes pourraient potentiellement créer plus de valeurs (par exemple, des valeurs non valides/non déclarées telles que XX_KK, etc.). Cela étendrait l’ensemble des valeurs initialement déclarées.

5voto

Oscar Gomez Points 12966

Les Enums doivent avoir des constructeurs exclusivement privés, car les Enum doivent être les seuls responsables du retour des instances prédéfinies.

4voto

Jeremy Heiler Points 14320

Dans le cas des enums, cela signifie la même chose que de le rendre privé. La seule façon d’instancier un enum est de le déclarer dans votre classe enum. Enums ne peut pas avoir de constructeurs publics.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X