Kotlin 枚举类学习笔记
什么是枚举类
在Kotlin中,枚举类是一种类型安全的枚举。它们可以包含属性、方法和构造函数,并且可以实现接口。
枚举类的定义方式如下:
kotlinCopy Codeenum class Direction {
NORTH, SOUTH, WEST, EAST
}
如何使用枚举类
我们可以使用枚举常量来代替常规的整数或字符串常量。例如:
kotlinCopy Codefun main() {
val direction = Direction.NORTH
if (direction == Direction.NORTH) {
println("向北方向前进")
}
}
上述代码中,我们通过比较direction
和枚举常量Direction.NORTH
,来判断方向是否朝北。
枚举类的属性和方法
枚举类可以包含属性和方法:
kotlinCopy Codeenum class Color(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF);
fun containsRed(): Boolean {
return (this.rgb and 0xFF0000) != 0
}
}
在上述代码中,我们定义了一个Color
枚举类,其中包含了三个枚举常量:RED
、GREEN
和BLUE
。每个枚举常量都有一个对应的rgb值,并且我们还定义了一个containsRed()
方法,用于检查rgb值是否包含红色。
我们可以通过以下方式来使用:
kotlinCopy Codefun main() {
val red = Color.RED
println(red.containsRed()) // 输出 true
}
枚举类的实例
下面是一个使用枚举类的实例,该实例定义了一个Weekday
枚举类,表示一周中的每一天,并且包含了一个获取中文名字的方法:
kotlinCopy Codeenum class Weekday(val chineseName: String) {
MONDAY("星期一"),
TUESDAY("星期二"),
WEDNESDAY("星期三"),
THURSDAY("星期四"),
FRIDAY("星期五"),
SATURDAY("星期六"),
SUNDAY("星期日");
fun getChineseName(): String {
return this.chineseName
}
}
我们可以通过以下方式来使用:
kotlinCopy Codefun main() {
val friday = Weekday.FRIDAY
println(friday.getChineseName()) // 输出 星期五
val tuesday = Weekday.valueOf("TUESDAY")
println(tuesday.ordinal) // 输出 1
}
在上述代码中,我们创建了一个Weekday.FRIDAY
枚举常量,并调用它的getChineseName()
方法来获取它的中文名字。另外,我们还通过Weekday.valueOf("TUESDAY")
方法来获取TUESDAY
枚举常量,并调用ordinal
属性来获取它的位置索引。