我想定义一个值不是序数的枚举,例如:
enum class States(value: Int) {
STATE_A(4),
STATE_B(5),
STATE_C(7),
STATE_D(12)
}
如何获取每件商品的值(value)?例如 States.STATE_C 应该返回 7。
最佳答案
您应该将 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
顺序的任何更改都可能破坏您的代码。
https://stackoverflow.com/questions/50266433/
相关文章:
android - Dagger 2 与 Kotlin 的多重绑定(bind)
kotlin - 为什么这个 Kotlin 方法有封闭的反引号?
java - 如何将 Java 赋值表达式转换为 Kotlin
android - 在 Kotlin 中的原始类型属性上不允许使用 lateinit 修饰符
android - 无法获取提供商 com.google.android.gms.ads.Mobil
android - 在 android studio 中运行带有 main 函数的单个 kotlin
android - 如何在 Kotlin 中获取当前的本地日期和时间
kotlin - 在 Kotlin 中复制 map 最聪明的方法是什么?