如何在Kotlin中定义非序数枚举并获取其值?
获取Kotlin自定义值枚举项的数值
嘿,这事儿超简单的!你现在定义的枚举类里,value: Int只是构造函数的参数,默认是私有的,所以没法直接访问。只需要把它改成公开的只读属性就行啦:
修改后的枚举类定义
enum class States(val value: Int) { // 这里把构造参数改成val,让它成为枚举项的公开属性 STATE_A(4), STATE_B(5), STATE_C(7), STATE_D(12) }
访问枚举项的数值
现在你只需要通过枚举项的value属性就能拿到对应的数值了:
val cValue = States.STATE_C.value // 这里cValue的值就是7,完美符合你的需求!
额外小技巧(可选)
如果之后需要根据数值反向查找对应的枚举项,可以给枚举类加个伴生对象的辅助函数:
enum class States(val value: Int) { STATE_A(4), STATE_B(5), STATE_C(7), STATE_D(12); companion object { // 根据数值返回对应的枚举项,找不到就返回null fun fromValue(targetValue: Int): States? { return values().find { it.value == targetValue } } } }
用法示例:
val state = States.fromValue(7) // state就是States.STATE_C
内容的提问来源于stack exchange,提问作者Hamed Rezaee
相关产品推荐
相关产品推荐

