当前位置:嗨网首页>书籍在线阅读

02-基本用法

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

6.1.1 基本用法

在Kotlin中,枚举类的一个基本用法就是实现一个类型安全的枚举,枚举常量之间用逗号分隔,每个枚举常量都是一个对象。

enum class Color{
    RED,BLACK,BLUE,GREEN,WHITE
}

每一个枚举常量都是枚举类的实例,可以使用下面的方式完成初始化。

enum class Color(val rgb: Int) {
    RED(0xFF0000),
    GREEN(0x00FF00),
    BLUE(0x0000FF)
}

枚举类的默认名称为枚举字符名,值从0开始,如果需要指定枚举的值,那么可以使用其构造函数。代码如下。

enum class Shape(value:Int){
    ovel(100),
    rectangle(200)
}

枚举常量也可以声明自己的匿名类、相应的方法以及覆盖基类的方法。代码如下。

enum class ProtocolState {
    WAITING {
        override fun signal() = TALKING
    },
    TALKING {
        override fun signal() = WAITING
    };
    abstract fun signal(): ProtocolState
}

枚举类定义任何成员,都要使用分号将成员定义中的枚举常量分隔开。和Java一样,Kotlin中的枚举类也有合成方法,该方法允许列出定义的枚举常量并通过名称获取枚举常量。

EnumClass.valueOf(value: String): EnumClass  
EnumClass.values(): Array<EnumClass>

如果指定的名称与类中定义的任何枚举常量均不匹配,则valueOf()方法将抛出Illegal ArgumentException异常。

从Kotlin 1.1版本开始,可以使用enumValues()和enumValueOf()函数以泛型的方式访问枚举类中的常量。

enum class RGB { RED, GREEN, BLUE }
inline fun <reified T : Enum<T>> printAllValues() {
    print(enumValues<T>().joinToString { it.name })
}
printAllValues<RGB>()       //输出RED, GREEN, BLUE

对于每个枚举常量来说,都具有在枚举类声明中获取其名称和位置的属性的权限。代码如下。

val name: String
val ordinal: Int