Извлечь карту <String, Object> из перечисления с атрибутами ключ-значение в одну строку? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть общая реализация enum с традиционными атрибутами ключ-значение:

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
        }
    }
}

Есть ли лучший способ "Kotlin" для достижения того же результата, что и getKeyValuesMap()?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018
fun getKeyValuesMap() = FooEnum.values().associate { it.key to it.value }
0 голосов
/ 29 июня 2018
mapOf(*values().map { foo -> foo.key to foo.value }.toTypedArray())

Я бы рассмотрел использование val вместо fun, недостатком является то, что теоретически кто-то может привести результат к MutableMap или HashMap и изменить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...