使用kotlin中的values()和valueOf迭代枚举值

时间:2017-06-01 06:50:02

标签: kotlin

这是一个新手。任何人都可以举例说明使用values和valueOf方法迭代枚举吗?

这是我的枚举类

enum class Gender {
    Female,
    Male
}

我知道我们可以得到像这样的价值

Gender.Female

但我想迭代并显示Gender的所有值。我们怎样才能做到这一点? Anyhelp可能会受到赞赏

4 个答案:

答案 0 :(得分:22)

你可以这样使用values

val genders = Gender.values()

从Kotlin 1.1开始,还有辅助方法:

val genders = enumValues<Gender>()

通过上述内容,您可以轻松迭代所有值:

enumValues<Gender>().forEach { println(it.name) }

要将枚举名称映射到枚举值,请使用valueOf / enumValueOf,如下所示:

 val male = Gender.valueOf("Male")
 val female = enumValueOf<Gender>("Female")     

答案 1 :(得分:3)

您正在获得[LGender;@2f0e140b或类似打印Gender.values()的输出,因为您正在打印数组引用本身,并且数组不具有良好的默认值{ {1}}类似列表的实现。

打印所有值的最简单方法是迭代该数组,如下所示:

toString

或者如果你喜欢方法参考:

Gender.values().forEach { println(it) }

您还可以使用标准库中的joinToString在单个格式化字符串中显示所有值(它甚至包含前缀,后缀,分隔符等选项):

Gender.values().forEach(::println)

答案 2 :(得分:0)

您可以将此方法添加到您的枚举类中。

fun getArray(): List<String> {
    return values().map {
        it.toString()
    }
}

然后致电

val genders = Gender.getArray()
// gender is now an array of string
// Female, Male

答案 3 :(得分:0)

您可以这样做并获得您的枚举类型的新数组 Gender

val arr = enumValues<Gender>()

如果你想要一个它的列表,你可以使用扩展名。 toList()