Kotlin 枚举类学习笔记

什么是枚举类

在Kotlin中,枚举类是一种类型安全的枚举。它们可以包含属性、方法和构造函数,并且可以实现接口。

枚举类的定义方式如下:

kotlinCopy Code
enum class Direction { NORTH, SOUTH, WEST, EAST }

如何使用枚举类

我们可以使用枚举常量来代替常规的整数或字符串常量。例如:

kotlinCopy Code
fun main() { val direction = Direction.NORTH if (direction == Direction.NORTH) { println("向北方向前进") } }

上述代码中,我们通过比较direction和枚举常量Direction.NORTH,来判断方向是否朝北。

枚举类的属性和方法

枚举类可以包含属性和方法:

kotlinCopy Code
enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF); fun containsRed(): Boolean { return (this.rgb and 0xFF0000) != 0 } }

在上述代码中,我们定义了一个Color枚举类,其中包含了三个枚举常量:REDGREENBLUE。每个枚举常量都有一个对应的rgb值,并且我们还定义了一个containsRed()方法,用于检查rgb值是否包含红色。

我们可以通过以下方式来使用:

kotlinCopy Code
fun main() { val red = Color.RED println(red.containsRed()) // 输出 true }

枚举类的实例

下面是一个使用枚举类的实例,该实例定义了一个Weekday枚举类,表示一周中的每一天,并且包含了一个获取中文名字的方法:

kotlinCopy Code
enum class Weekday(val chineseName: String) { MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期日"); fun getChineseName(): String { return this.chineseName } }

我们可以通过以下方式来使用:

kotlinCopy Code
fun 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属性来获取它的位置索引。