Les énumérations dans kotlin

Partager

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


Partager

Laisser un commentaire

Résoudre : *
24 − 10 =


%d