Как я могу получить значение Int из перечисления Kotlin? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть такое перечисление:

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

Как я могу получить значение enum? Например, States.STATE_C должен вернуть 3 .

1 Ответ

0 голосов
/ 10 мая 2018

Вы должны определить value как свойство (val), а не как параметр конструктора. После этого становится доступным:

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

Также рассмотрите возможность использования ordinal, что может подойти в вашем случае:

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

Если вы придерживаетесь этого подхода, будьте осторожны - любое изменение порядка States может нарушить ваш код.

...