【问题标题】:How to get enum value by passing value into it?如何通过将值传递给枚举值来获取枚举值?
【发布时间】:2021-07-25 17:24:03
【问题描述】:

我在 Kotlin 中第一次以这种方式使用 enums。我有enum 的状态。我期待来自JSONObject 的一些Int 值,我想通过将此值传递给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"))

这意味着状态将保存值AccountRequestState.PENDING,它应该代表值0x001的Int

【问题讨论】:

    标签: android kotlin enums


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 2023-02-06
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      相关资源
      最近更新 更多