web-dev-qa-db-fra.com

Comment puis-je obtenir la valeur Int de Kotlin enum Int?

J'ai un enum comme ça:

enum class States(value: Int) {
    STATE_A(1),
    STATE_B(2),
    STATE_C(3),
    STATE_D(4)
}

Comment puis-je obtenir la valeur de enum? Par exemple, States.STATE_C devrait renvoyer .

30
Hamed

Vous devez définir value en tant que propriété (val) et non en tant que paramètre constructeur. Après cela, il devient accessible:

enum class States(val value: Int) {
    STATE_A(1),
    STATE_B(2),
    STATE_C(3),
    STATE_D(4)
}
...
println(States.STATE_C.value) // prints 3

Pensez également à utiliser ordinal, ce qui peut convenir à votre cas:

enum class States {
    STATE_A,
    STATE_B,
    STATE_C,
    STATE_D
}
...
println(States.STATE_C.ordinal + 1) // prints 3

Si vous optez pour cette approche, soyez prudent - tout changement de l'ordre de States peut casser votre code.

57
hluhovskyi