这是一个新手。任何人都可以举例说明使用values和valueOf方法迭代枚举吗?
这是我的枚举类
enum class Gender {
Female,
Male
}
我知道我们可以得到像这样的价值
Gender.Female
但我想迭代并显示Gender的所有值。我们怎样才能做到这一点? Anyhelp可能会受到赞赏
答案 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()