如何通过将值传递给枚举值来获取枚举值?

时间:2021-05-03 09:31:13

标签: android kotlin enums

我第一次在 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

1 个答案:

答案 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)