首页 > 解决方案 > 如何使用 Kotlin 中的属性访问枚举实例?

问题描述

我有一个这样的枚举类:

enum class ParkingLotStatus (val number:Int, var occupied: Boolean) {
        LOT1(1,true),
        LOT2(2,false)
    }

我想使用number变量选择枚举实例。如果我将用户输入设为1,我希望能够LOT1根据变量 (constant?)选择枚举强度number

一种方法是遍历所有枚举实例并检查输入是否与变量匹配

有没有更简单且资源密集的方法来做到这一点?

标签: kotlinenums

解决方案


像这样的东西会起作用:

fun main(args: Array<String>) {
    val parking = ParkingLotStatus.get(1) // LOT1
}
enum class ParkingLotStatus (var occupied: Boolean) {
    LOT1(true),
    LOT2(false);
    companion object {
        fun get(number: Int) = when(number){
            1 -> LOT1
            2 -> LOT2
            else -> throw UnsupportedOperationException("Invalid parking number")
        }
    }
}

我还建议切换到sealed classes over Enums


推荐阅读