Я пытаюсь найти лучший способ сделать "обратный поиск" на перечислении в Котлине. Одним из моих выводов из Effective Java было то, что вы вводите статическую карту внутри enum для обработки обратного поиска. Передача этого в Kotlin с простым перечислением приводит меня к коду, который выглядит так:
enum class Type(val value: Int) {
A(1),
B(2),
C(3);
companion object {
val map: MutableMap<Int, Type> = HashMap()
init {
for (i in Type.values()) {
map[i.value] = i
}
}
fun fromInt(type: Int?): Type? {
return map[type]
}
}
}
Мой вопрос в том, что это лучший способ сделать это, или есть лучший способ? Что делать, если у меня есть несколько переписей, которые следуют аналогичной схеме? Есть ли способ в Котлине сделать этот код более пригодным для повторного использования в переписках?