我想定义一个值不是序数的枚举,例如:
enum class States(value: Int) {
STATE_A(4),
STATE_B(5),
STATE_C(7),
STATE_D(12)
}
我如何获得每个物品的价值?例如,States.STATE_C应该返回7。
Answers:
您应将其定义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
顺序的任何更改都会破坏您的代码。