参考原文:http://kotlinlang.org/docs/reference/enum-classes.html
使用“enum”关键字修饰类:
enum classDirection { NORTH, SOUTH, WEST, EAST } |
每一个枚举常量项都是一个对象;使用“,”分割。
初始化(Initialization)
每一个枚举都是枚举类的一个实例,可以初始化:
enum classColor(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) } |
匿名类(Anonymous Classes)
枚举常量也可以声明匿名类:
enum classProtocolState { WAITING { override fun signal() = TALKING }, TALKING { override fun signal() = WAITING };
abstract fun signal(): ProtocolState } |
若枚举类有定义枚举常量外的其他成员,枚举常量与其他成员使用“;”分割。
枚举常数使用(Working with Enum Constants)
跟Java一样,在Kotlin中,枚举类提供一些方法:如列取所有定义的枚举常量;可以通过名字获取枚举常量。(假设枚举类为“ EnumClass”):
EnumClass.valueOf(value: String): EnumClass EnumClass.values(): Array<EnumClass> |
Ø 使用“valueOf()”时,若传入的名称找不到一个匹配的枚举常量,会抛出一个“IllegalArgumentException
”异常。
val name: String //名称 val ordinal: Int //定义位置的序号 |
Ø 枚举常量也实现了“Comparable”接口。