Une énumération est un type de données utilisé pour définir un ensemble de constant.Dans Kotlin chaque constant de l’énumération est un objet .Ces constantes sont séparées par une virgule.Vous pouvez par exemple représenter les jours de la semaine avec une énumération.
Table des matières
Déclarer une énumération
Une énumération se déclare en ajoutant le mot clé enum devant le mot class. En effet dans kotlin une énumération est une classe.
enum class STATUT{ LUNDI,MARDI,MERCREDI,JEUDI,VENDREDI,SAMEDI,DIMANCHE }
Initialiser les constantes d’une énumération
Puisque une énumération est une classe et une constante est une instance d’une classe enum alors les constantes peuvent être initialiser en passant des paramètres au constructeur de la classe enum. Vous devez ensuite définir chaque constante avec les valeurs correspondant aux paramètres du constructeur de la classe enum.
enum class STATUT(val jour: Int){ LUNDI(1),MARDI(2),MERCREDI(3),JEUDI(4),VENDREDI(5),SAMEDI(6),DIMANCHE(7) }
Vous pouvez ensuite accéder à la valeur jour de chaque constance comme suit.
STATUT.LUNDI.jour
Les classes anonymes et les constantes d’énumération
Puisque chaque constante d’une énumération est une instance d’une classe enum alors elles peuvent définir leurs classes anonymes contenant leur méthodes et les méthodes à redéfinies de la classe enum de base.
Si la classe enum définie des membres, vous devez séparer les constantes et les membres de la classe enum par un point virgule.
enum class SEMAINE{ LUNDI{ override fun numeroSemaine() { } },MARDI { override fun numeroSemaine() { } },MERCREDI { override fun numeroSemaine() { } },JEUDI { override fun numeroSemaine() { } },VENDREDI { override fun numeroSemaine() { } },SAMEDI { override fun numeroSemaine() { } },DIMANCHE { override fun numeroSemaine() { } }; abstract fun numeroSemaine() }
Vous pouvez ensuite appeler les méthodes redéfinies dans chaque constante d’énumération comme suit
SEMAINE.DIMANCHE.numeroSemaine()
Implémenter une interface avec la classe enum
Une énumération peut implémenter une interface mais ne peux pas dérivé une classe.
Quand une énumération implémente une interface, elle peut directement implémenter les méthodes abstraites de l’interface pour ses constantes.
Voici un exemple qui illustre une énumération qui implémente une interface.
interface NumeroJour{ fun getNumeroJour() } enum class SEMAINE:NumeroJour{ LUNDI{ override fun numeroSemaine() { } },MARDI { override fun numeroSemaine() { } },MERCREDI { override fun numeroSemaine() { } },JEUDI { override fun numeroSemaine() { } },VENDREDI { override fun numeroSemaine() { } },SAMEDI { override fun numeroSemaine() { } },DIMANCHE { override fun numeroSemaine() { } }; abstract fun numeroSemaine() override fun getNumeroJour() { } }
Dans cet exemple l’énumération implémente l’interface NumeroJour et redéfinie la méthode getNumeroJour pour ses constantes.Ses constantes n’ont plus besoin de implémenter la méthode getNumeroJour.
Cependant,chaque constantes de l’énumération peut implémenter la méthode de l’interface comme suit.
interface NumeroJour{ fun getNumeroJour() } enum class SEMAINE:NumeroJour{ LUNDI{ override fun getNumeroJour() { } },MARDI { override fun getNumeroJour() { } },MERCREDI { override fun getNumeroJour() { } },JEUDI { override fun getNumeroJour() { } },VENDREDI { override fun getNumeroJour() { } },SAMEDI { override fun getNumeroJour() { } },DIMANCHE { override fun getNumeroJour() { } }; }
Opérations sur les constantes d’énumérations
Les classes enum ont des méthodes synthétiques permettant de lister les constant d’énumération définies ou d’obtenir une constante enum par son nom.
Ils s’agit des méthodes valueOf(value: String) et values() .
La méthode valueOf(value: String) lève l’exception IllegalArgumentException si le nom spécifié ne correspond à aucun des constantes d’énumération définies dans la classe enum.
println(SEMAINE.JEUDI) print(SEMAINE.valueOf("JEUDI1"))
La méthode values() .
Pour retourner le nombre de constante de l’énumération, on utilise la méthode values() comme suite
println(SEMAINE.values().size)
Résultatl:7
Parcourir les constantes d’énumération
Vous pouvez parcourir les constantes d’énumération comme suit.
for (jour in SEMAINE.values()){ print("$jour ") }
Résultat:LUNDI MARDI MERCREDI JEUDI VENDREDI SAMEDI DIMANCHE
Les propriétés name et ordinal
Les constantes d’énumération possède deux méthodes name et ordinal pour obtenir le nom et la position des constantes d’énumération dans la déclaration de la classe enum comme suit.
print("Le jour: ${SEMAINE.SAMEDI.name} est à la position ${SEMAINE.SAMEDI.ordinal}")
Résultat: Le jour: SAMEDI est à la position 5
Conclusion
Voila nous sommes à la fin de ce tutoriel dans lequel vous avez appris à créer et travailler avec les énumération dans kotlin. J’espère que ce tutoriel vous aidera.A bientôt pour un nouveau tutoriel.
Pour démarrer avec kotlin sur IntelliJ IDEA ,cliquez ici
Autres ressources
https://kotlinlang.org/docs/reference/enum-classes.html
Noe Joel Vigan, auteur de ce blog, est passionné par la programmation Android. Il a créé ce blog pour partager ses connaissances sur le développement d’application android. Il est Développeur Android Fullstack, ce qui lui permet de complètement mettre en place le Backend de ses applications sur Google Cloud à défaut d’utiliser FireBase.