web-dev-qa-db-ja.com

Kotlin列挙型からInt値を取得するにはどうすればよいですか?

私はこのような列挙型を持っています:

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

列挙型の値を取得するにはどうすればよいですか?たとえば、States.STATE_Cはを返す必要があります。

30
Hamed

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の順序を変更すると、コードが破損する可能性があります。

57
hluhovskyi