gpt4 book ai didi

enums - Kotlin 中具有反向查找的有效枚举?

转载 作者:IT老高 更新时间:2023-10-28 13:26:05 27 4
gpt4 key购买 nike

我正在尝试找到对 Kotlin 中的枚举进行“反向查找”的最佳方法。我从 Effective Java 中得到的一个收获是,您在枚举中引入了一个静态映射来处理反向查找。用一个简单的枚举将它移植到 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]
}
}
}

我的问题是,这是最好的方法,还是有更好的方法?如果我有几个遵循类似模式的枚举怎么办? Kotlin 有没有办法让这段代码在枚举中更易于重用?

最佳答案

首先,fromInt() 的参数应该是Int,而不是Int?。尝试使用 null 获取 Type 显然会导致 null,调用者甚至不应该尝试这样做。 Map 也没有理由是可变的。代码可以简化为:

companion object {
private val map = Type.values().associateBy(Type::value)
fun fromInt(type: Int) = map[type]
}

那段代码太短了,坦率地说,我不确定是否值得尝试寻找可重用的解决方案。

关于enums - Kotlin 中具有反向查找的有效枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37794850/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com