如何从Kotlin枚举中获取Int值?

问题描述 投票:43回答: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个回答
77
投票

您应该将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.