J'essaie de trouver le meilleur moyen de faire une «recherche inversée» sur un enum à Kotlin. L'un de mes points à retenir de Effective Java était que vous introduisiez une carte statique dans l'énumération pour gérer la recherche inversée. Porter ceci sur Kotlin avec une simple énumération me conduit à un code qui ressemble à ceci:
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]
}
}
}
Ma question est la suivante: est-ce la meilleure façon de procéder ou existe-t-il une meilleure façon de procéder? Que faire si j'ai plusieurs énumérations qui suivent un modèle similaire? Y a-t-il un moyen dans Kotlin de rendre ce code plus réutilisable entre les énumérations?