【问题标题】:How to define a non-ordinal enum in Kotlin?如何在 Kotlin 中定义非序数枚举?
【发布时间】:2025-12-01 22:55:02
【问题描述】:

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

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

如何获取每件商品的价值?例如 States.STATE_C 应该返回 7

【问题讨论】:

    标签: kotlin enums


    【解决方案1】:

    您应该将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 顺序的任何更改都可能破坏您的代码。

    【讨论】: