kotlin - 如何在 Kotlin 中定义非序数枚举?

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

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 最聪明的方法是什么?

kotlin - 传递 null 时,有没有办法在非可选参数上使用默认值?

android - Kotlin 等价于 Java 的 equalsIgnoreCase