使用枚举常量
和Java中类似,Kotlin中的枚举类有方法可以列出所有的枚举值并且通过名字得到一个枚举常量。这些方法的签名大致如下,假设枚举类的名字是EnumClass:
EnumClass.valueOf(value: String): EnumClass
EnumClass.values(): Array<EnumClass>
valueOf()方法在通过名字找不到任何可以匹配的枚举常量时间会抛出异常。
从Kotlin 1.1开始,可以通过泛型访问枚举类中的常量,使用enumValues<T>()和enumValueOf<T>()。
enum class RGB { RED, GREEN, BLUE }
inline fun <reified T : Enum<T>> printAllValues() {
print(enumValues<T>().joinToString { it.name })
}
printAllValues<RGB>()
以上代码在IDE中会报错,但是实际代码是可以运行的,估计是Kotlin的插件问题。
每个枚举常量都有一个名字和位置索引属性。
val name: String
val ordinal: Int
枚举常量同时实现了Comparable接口,在枚举类中使用自然排序。