首页 > 解决方案 > 从关联值初始化枚举

问题描述

我想通过其关联值初始化枚举。

我的枚举:

enum class DirectionSwiped(raw: Int){
    LEFT(4),
    RIGHT(8);
}

我想这样初始化它:

val direction = DirectionSwiped(raw: 4)

但我得到这个错误:

枚举类型无法实例化

为什么会这样?在 Swift 中,这个功能是这样工作的:

enum Direction: Int {
    case right = 2
}

let direction = Direction(rawValue: 2)

我怎样才能让它在 Kotlin 中工作?

标签: kotlinenums

解决方案


是的你可以

enum class DirectionSwiped(val raw: Int){
    LEFT(4),
    RIGHT(8);
}

val left = DirectionSwiped.LEFT
val right = DirectionSwiped.RIGHT

val leftRaw = DirectionSwiped.LEFT.raw
val rightRaw = DirectionSwiped.LEFT.raw

val fromRaw = DirectionSwiped.values().firstOrNull { it.raw == 5 }

这将是访问实例的正确方法enum class

您要做的是在定义站点之外创建一个新实例,这对于enumsealed类是不可能的,这就是错误说构造函数是私有的原因


推荐阅读