Parfois on connais déjà le domaine d’une classe et il est assez réduit. Par exemple si on a une classe Suit, on sait déjà que les seules valeurs possibles sont Spade, Heart, Diamond et Tremol.
On peut un peu imaginer les enums comme des collections de constantes. Contrairement à d’autres languages de programmation comme le Rust où les enum sont plus flexibles.
Définition d’une enum simple
Dans ce cas on peut donc créer un objet special appellé enum en y définissant les valeurs possibles :
Définition d’une enum avec attributs
Mais on peut aussi avoir des attributs dans des enums :
Comment utiliser une enum
Maintenant pour l’utiliser on a plus besoin de new :
Convertir une enum en une autre
Mais on peut aussi transformer une enum en une autre si les noms sont compatibles.
Résumé
Un enum en Java :
Est un moyen de fixer le domaine d’une classe à quelques éléments
Est immuable (on ne peut pas ajouter de nouveaux objets, ni modifier les attributs)
Supporte l’utilisation de Switch et peuvent être automatiquement converti en String.
Chaque membre possède une position et on peut comparer les différents objets par leurs positions.
Ne nécésite pas de new pour être instancié.
Ses attributs doivent être private final pour le rendre immuable et encapsuler ses attributs.
Les méthodes par défault des enums :
.compareTo(AutreEnum) pour comparer les positions de 2 membres d’un enum
.ordinal() pour avoir la position d’un membre de l’enum
.values() pour convertir l’enum en tableau
.toString() donne le nom du membre de l’enum
.valueOf(String) pour récupérer un enum à partir d’un String (donc avec toString très utile pour convertir 2 enums qui ont les même noms de membres)