我有一个具有传统键值属性的常规枚举实现:
enum class FooEnum(val key : String, val value : Any) {
FOO1("FOO_KEY", "FOO_VALUE"),
FOO2("FOO_KEY2", 0);
companion object {
fun getKeyValuesMap(): Map<String, Any> {
val defaults = HashMap<String, Any>()
for (v in values())
defaults[v.key] = v.value
return defaults
}
}
}
是否有更好的“科特林”方法来实现与getKeyValuesMap()
相同的结果?
答案 0 :(得分:4)
fun getKeyValuesMap() = FooEnum.values().associate { it.key to it.value }
答案 1 :(得分:0)
mapOf(*values().map { foo -> foo.key to foo.value }.toTypedArray())
我会考虑使用val
而不是fun
,缺点是理论上有人可以将结果转换为MutableMap
或HashMap
并进行变异。 / p>