如何在Kotlin中定义非顺序枚举?

如何在Kotlin中定义非顺序枚举?,kotlin,enums,Kotlin,Enums,我想定义一个值不是序号的枚举,例如: enum class States(value: Int) { STATE_A(4), STATE_B(5), STATE_C(7), STATE_D(12) } 如何获得每个项目的价值?例如States.STATE_C应该返回7您应该将值定义为属性(val),而不是构造函数参数。之后,可以访问: enum class States(val value: Int) { STATE_A(1), STATE_B(

我想定义一个值不是序号的枚举,例如:

enum class States(value: Int) {
    STATE_A(4),
    STATE_B(5),
    STATE_C(7),
    STATE_D(12)
}

如何获得每个项目的价值?例如States.STATE_C应该返回7

您应该将
值定义为属性(
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

也考虑使用<代码>序号,这可能适用于你的情况:

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

如果你采用这种方法,请小心-对
状态的任何更改
顺序都可能会破坏你的代码。

Hi@hluhovskyi,那么,从技术上讲,顺序索引将基于1吗?Enum的顺序是基于零的:为什么不从0开始呢?有许多情况下,你需要从0以外的其他位置开始。