Kotlin中的Enum.Values()和EnumValues()之间的差异



在官方文档中,我找到了 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>()

相关内容

  • 没有找到相关文章

最新更新