Kotlin枚举类
枚举类也是Kotlin
中一个特殊的类。它的特殊点在于它里面容纳的是一组固定的值。使用时,仅限于已经列出的值,可以防止传入非法的值,导致程序运行异常。
在Kotlin
中,枚举类最基本的用法是实现一个类型安全的枚举。
枚举类的声明格式为:enum class ENUM_NAME{OBJ1, OBJ2, OBJ3, ...}
我们来写一个枚举的例子:
enum class Color {
RED, GREEN, BLUE
}
枚举类的成员也可以对其进行初始化。
enum class Color(rgb: Int) {
RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF)
}
我们再来看一个截图:
从编译器的提示看出,枚举类的每个成员就是一个枚举类的实例。在构造函数中定义了一个Int
型的rgb
参数,每个成员也拥有了一个参数。
同样地,可以设置多个参数。
那我们怎么样使用枚举类呢?
fun main() {
val color: Color = Color.BLUE
println(color) // 打印枚举
println(Color.BLUE)
Color.values().forEach {
// 打印所有枚举对象的值
print("$it ")
}
println(enumValues<Color>().joinToString { it.name }) // 使用Kotlin标准库函数输出枚举值
println()
println(Color.valueOf("BLUE")) // 转换指定 name 为枚举的值,如果匹配不成功,则会抛出非法参数的异常
}
在未通过构造函数初始化枚举成员的值的时候,其默认值为第一个成员的值为0
,后续枚举成员值为前一个枚举成员的值加一(1, 2, 3, ...)。
另外,枚举还支持声明自己的匿名类及其函数,也可以覆盖父类的函数。
enum class WORKDAY {
S{
override fun workday(): Color {
return Color.GREEN
}
},
M {
override fun workday(): Color {
return Color.RED
}
},
T {
override fun workday(): Color {
return Color.BLUE
}
};
abstract fun workday(): Color
}
val workday: WORKDAY = WORKDAY.S
println(workday.workday()) //输出结果为GREEN
感谢童鞋一路的相伴,从Kotlin
类和对象到枚举类,关于Kotlin
类的内容就差不多结束了。