首发于公众号: 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<T>() 和 enumValueOf<T>()
直接使用泛型的方式访问枚举类中的常量
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
我们之后说
Kotlin学习笔记之 13 基础操作符run、with、let、also、apply