在 official document , 我找到了 enumValues()
功能。
我用过 enumValues()
功能,但我找不到区别。
enum class RGB {
RED, GREEN, BLUE
}
RGB.values().joinToString { it.name } // RED, GREEN, BLUE
enumValues<RGB>().joinToString { it.name } // RED, GREEN, BLUE
enumValues()
有什么区别和 Enum.values()
?它是 JVM 以外平台的功能吗?或者还有其他用例吗?
最佳答案
values()
的问题是它只存在于每个具体的枚举类中,并且您不能在通用枚举上调用它来获取其值,这在某些情况下非常有用。仅以想要访问 String
中的所有值的最简单示例为例。 , enumValues
让你写一个这样的函数:
inline fun <reified T: Enum<T>> getEnumValuesString(): String {
// could call RGB.values(), but not T.values()
// even with the generic constraint and reified generics
// this works, however
return enumValues<T>().joinToString()
}
然后可以使用您定义的任何枚举类调用它:
getEnumValuesString<RGB>()
关于kotlin - kotlin 中 Enum.values() 和 enumValues() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54998238/