我第一次在 Kotlin 中以这种方式使用 enums
。我有 enum
与状态。我期待来自 Int
的一些 JSONObject
值,我想通过将此值传递到 enum
类来将此值转换为 enum
或 null。但它没有根据我得到的错误工作。这甚至可能与枚举有关吗?
示例:
enum class AccountRequestState(val state: Int){
PENDING(0x001),
APPROVED(0x002),
REJECTED(0x003),
CANCELED(0x004)
}
private val state: AccountRequestState? = AccountRequestState(js.getInt("state"))
这意味着 state 将持有值 AccountRequestState.PENDING
并且它应该代表值为 0x001
的 Int
答案 0 :(得分:2)
您可以使用静态函数来查找哪个枚举对应哪个 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)