按枚举的给定值而不是KEY检索枚举

  • 本文关键字:枚举 检索 KEY kotlin
  • 更新时间 :
  • 英文 :


我不知道术语,所以我不知道去哪里找(对不起(。这里是我的枚举:

enum class QualityGrade(val grade: Int) {
GOOD(1), OK(2), SOSO(3), BAD(4)
}

我想做什么(不知怎么的(

assertEquals(QualityGrade.GOOD, QualityGrade(1))

我无法用语言来描述这个问题,所以我希望有人能回答。。。

以下是我在这种情况下通常使用的方法:

enum class QualityGrade(val grade: Int) {
GOOD(1), OK(2), SOSO(3), BAD(4);
companion object {
private val valuesByGrade = values().map {
it.grade to it
}.toMap()
fun findByGrade(grade: Int): QualityGrade? {
return valuesByGrade[grade]
}
}
}
assert(QualityGrade.GOOD == QualityGrade.findByGrade(1))

UPD:修改为稍好的版本

最新更新