Ich versuche den besten Weg zu finden, eine 'Reverse Lookup' auf einem Enum in Kotlin zu machen. Einer meiner Vorteile von Effective Java war, dass Sie eine statische Map innerhalb der Enumeration einführen, um die umgekehrte Suche zu handhaben. Portieren dieses über Kotlin mit einem einfachen Enum führt mich zu Code, der wie folgt aussieht:Effektive Enums in Kotlin mit Reverse Lookup?
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]
}
}
}
Meine Frage ist, ist dies der beste Weg, dies zu tun, oder gibt es einen besseren Weg? Was ist, wenn ich mehrere Enums habe, die einem ähnlichen Muster folgen? Gibt es einen Weg in Kotlin, um diesen Code in Enums wiederverwendbar zu machen?
Ich war dabei, das gleiche zu empfehlen. Außerdem würde ich 'fromInt' nicht-null zurückgeben wie' Enum.valueOf (String) ':' map [type]?: Throw IllegalArgumentException() ' – mfulton26
Angesichts der Kotlin-Unterstützung für Null-Sicherheit, Rückgabe NULL von der Methode würde mich nicht stören, wie es in Java der Fall wäre: Der Aufrufer wird vom Compiler gezwungen, sich mit einem Null-Rückgabewert zu befassen und zu entscheiden, was zu tun ist (werfen oder etwas anderes tun). –
Guter Punkt. Vielen Dank. – mfulton26