📜  Kotlin 中的枚举类(1)

📅  最后修改于: 2023-12-03 14:43:41.525000             🧑  作者: Mango

Kotlin 中的枚举类

在 Kotlin 中,枚举类是一种特殊的类,用于表示具有一组有限可能值的数据类型。通过使用枚举类,我们可以更具可读性和易于维护性的方式来表示一些常量。

创建枚举类

Kotlin 中的枚举类使用 enum 关键字来声明。下面是一个简单的示例:

enum class Color {
    RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
}

在上面的示例中,我们定义了一个名为 Color 的枚举类,其包含 7 个值:REDORANGEYELLOWGREENBLUEINDIGOVIOLET

我们还可以为枚举类指定属性和方法:

enum class Color(val rgb: Int) {
    RED(0xFF0000),
    ORANGE(0xFFA500),
    YELLOW(0xFFFF00),
    GREEN(0x00FF00),
    BLUE(0x0000FF),
    INDIGO(0x4B0082),
    VIOLET(0x7F00FF);

    fun colorName(): String {
        return when (this) {
            RED -> "Red"
            ORANGE -> "Orange"
            YELLOW -> "Yellow"
            GREEN -> "Green"
            BLUE -> "Blue"
            INDIGO -> "Indigo"
            VIOLET -> "Violet"
        }
    }
}

在上面的示例中,我们为枚举类 Color 添加了一个 rgb 属性和一个 colorName() 方法。其中 rgb 是枚举类的构造函数参数,colorName() 方法返回枚举值的名称。

使用枚举类

我们可以使用枚举类的值来表示一些固定的常量。例如,以下代码将输出 "RED":

val color = Color.RED
println(color.name)

如果我们要获取枚举值的属性,则需要使用点号(.)操作符。例如,以下代码将输出 0xFF0000

val color = Color.RED
println(color.rgb)

我们还可以使用枚举类的 valueOf() 方法来获取特定名称的枚举值。例如,以下代码将输出 Color.BLUE

val color = Color.valueOf("BLUE")
枚举类中的匿名类

在 Kotlin 中,枚举类可以包含匿名类,以提供额外的方法和行为。以下示例演示如何在枚举类中使用匿名类:

enum class Direction(val degrees: Int) {
    NORTH(0) {
        override fun toString() = "North"
    },
    EAST(90) {
        override fun toString() = "East"
    },
    SOUTH(180) {
        override fun toString() = "South"
    },
    WEST(270) {
        override fun toString() = "West"
    };

    abstract fun toString(): String
}

在上面的示例中,我们为 Direction 枚举类的每个实例添加了一个 toString() 方法,以便将其自定义字符串表示。

总结

枚举类是 Kotlin 中用于表示一组有限可能值的数据类型。在 Kotlin 中,我们可以用 enum 关键字来定义枚举类,通过自定义属性和方法,可以为其提供更多的行为和行为。枚举类可以作为常量和参数类型使用,以增加代码可读性和可维护性。