从具有行键值属性的枚举中提取Map <string,object =“”>到一行?

时间:2018-06-28 20:52:20

标签: kotlin

我有一个具有传统键值属性的常规枚举实现:

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()相同的结果?

2 个答案:

答案 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,缺点是理论上有人可以将结果转换为MutableMapHashMap并进行变异。 / p>