android - 如何通过将值传递给枚举值来获取枚举值?
问题描述
我enums
第一次在 Kotlin 中使用这种方式。我有enum
国家。我期待一些Int
价值JSONObject
,我想enum
通过将此值传递给类来将此值转换为或 null enum
。但它不能根据我得到的错误工作。这甚至可能与枚举有关吗?
例子:
enum class AccountRequestState(val state: Int){
PENDING(0x001),
APPROVED(0x002),
REJECTED(0x003),
CANCELED(0x004)
}
private val state: AccountRequestState? = AccountRequestState(js.getInt("state"))
这意味着状态将保持价值AccountRequestState.PENDING
,例如,它应该代表 Int 的价值0x001
解决方案
您可以使用静态函数来查找哪个枚举对应于哪个 int 值:
enum class AccountRequestState(val state: Int){
PENDING(0x001),
APPROVED(0x002),
REJECTED(0x003),
CANCELED(0x004);
companion object {
fun fromStateInt(state: Int): AccountRequestState? = values().firstOrNull { it.state == state }
}
}
然后你可以像这样访问它:
private val state: AccountRequestState? = AccountRequestState.fromStateInt(0x001)
推荐阅读
- java - 我的示例是 ADT 的描述吗?(爪哇)
- c - 用 C 编写一个程序,提示用户输入两个日期,然后指示日历上哪个日期更早
- php - 用户注册后不保持登录状态
- cookies - 我将如何获得特定的 cookie?
- node.js - 使用 nodemailer、pdfkit 和 mailgun 生成动态 pdf 并在 nodejs 中作为电子邮件附件发送
- swift - SwiftUI 代码未在 UIKit 项目中编译
- vue.js - 在 Nuxt 中为每页选择 Vuex 模块
- ios - Xcode 12 模块 'RxSwift' 未在库演化支持下编译;使用它意味着无法保证 '' 的二进制兼容性
- c# - 如何从 C# 中的种子生成器生成随机数,随着时间的推移将继续生成相同的数字?
- c# - CancellationTokenSource 在 TaskCompletionSource 上未按预期工作