背景
- 学习 记录分享 坚持开源!
说明
枚举类最基本的用法是实现一个类型安全的枚举。
枚举常量用逗号分隔,每个枚举常量都是一个对象。
enum class Color {
RED,WHITE,BLACK,BLUE,PINK
}
枚举初始化
每一个枚举都是枚举类的实例,它们可以被初始化:
enum class Color(val rgb: Int) {
RED(0xff0000),
BLUE(0x0000ff)
}
枚举支持声明方法,以及覆盖父类的方法。如:
enum class ProtocolState {
WAITING{
// 覆盖父类方法
override fun signal(): ProtocolState {
return TALKING
}
},
TALKING{
override fun signal(): ProtocolState {
return WAITING
}
};
// 支持声明方法
abstract fun signal(): ProtocolState
}
如果枚举类定义任何成员,要使用分号将成员定义中的枚举常量定义与其他成员定义分隔开
使用枚举常量
Kotlin
中的枚举类具有合成方法,允许遍历定义的枚举常量,并通过枚举类名称获取枚举常数。
EnumClass.valueOf(value: String): EnumClass // 转换指定 name 为枚举值,若未匹配成功,会抛出IllegalArgumentException
EnumClass.values(): Array<EnumClass> // 以数组的形式,返回枚举值
获取枚举类中枚举常量相关信息:
val name: String //获取枚举名称
val ordinal: Int //获取枚举值在所有枚举数组中定义的顺序
实例
枚举类 Color
定义如下:
enum class Color(val rgb: Int) {
RED(0xff0000),
BLUE(0x0000ff)
}
调用:
private fun enumTest() {
println("> --- enumTest ---")
var color = Color.RED
println("> color.name = ${color.name}")
println("> color.ordinal = ${color.ordinal}")
println("> values = ${Color.values()}")
println("> valuesOfRED = ${Color.valueOf("RED")}")
}
输出结果:
技术永不眠!我们下期见!