我怎样才能从科特林枚举int值?

问题描述 投票:23回答:1

我有一个这样的枚举:

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

我怎样才能得到枚举值?例如States.STATE_C应该返回3。

enums kotlin evaluation
1个回答
58
投票

你应该定义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为了能打破你的代码的任何变化。

© www.soinside.com 2019 - 2024. All rights reserved.