首页 > 解决方案 > 如何通过将值传递给枚举值来获取枚举值?

问题描述

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

标签: androidkotlinenums

解决方案


您可以使用静态函数来查找哪个枚举对应于哪个 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)

推荐阅读