首发于公众号: DSGtalk1989
11.Kotlin 枚举类
-
枚举类初始化
关键字是
enum,kotlin中的枚举类初始化可以有参数,比如:enum class Shape(value:Int){ ovel(100), rectangle(200) }我们习惯性的会将枚举对象大写,但实际上不一定需要。
并且这里我们会将破天荒的第一次在kotlin中去使用分号
;,它主要用来区分枚举对象和成员函数的enum class ProtocolState { WAITING { override fun signal() = TALKING }, TALKING { override fun signal() = WAITING }; abstract fun signal(): ProtocolState }枚举对象内部也可以直接加入方法。
-
静态方法values和valueOf,和属性name,ordinal
values方法返回的是枚举类数组,会遍历枚举常量。valuesOf会直接返回相应字符串对应的枚举对象。name顾名思义就是枚举类的名字,ordinal是对象所在的index从0开始println(Color.valueOf("RED") for(color in Color.values()){ println(color.name) println(color.ordinal) } -
enumValues() 和 enumValueOf()
直接使用泛型的方式访问枚举类中的常量
inline fun <reified T : Enum<T>> printAllValues() { print(enumValues<T>().joinToString { it.name }) } fun main(args: Array<String>) { printAllValues<RGB>() // 输出 RED, GREEN, BLUE }里面涉及到的
inline和reified我们之后说