kotlin - 从关联值初始化枚举
问题描述
我想通过其关联值初始化枚举。
我的枚举:
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 中工作?
解决方案
是的你可以
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
您要做的是在定义站点之外创建一个新实例,这对于enum
或sealed
类是不可能的,这就是错误说构造函数是私有的原因
推荐阅读
- api - 通过 Microsoft Graph API 写入 Excel 电子表格 - 无法获取 WAC 访问令牌
- javascript - React button background change on toggle give error(使用 React Hooks)
- c# - 不覆盖 C# 窗口窗体中保存的 xml 文件
- apache - 尝试安装 mod_jk 时出错 - Centos 8
- c# - 排序和分组列表数据
- php - 如果未使用 php 会话登录,则使用户重定向
- java - IntelliJ IDEA 为 JavaFX 应用程序创建 MSI 安装程序
- php - 如何在yii2中的按钮onclick上调用控制器功能
- python - 如何将等长字符串分解为 Pandas DataFrame 列(没有空列)
- excel - 在公式中偏移 ActiveCell