在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/