kotlin枚举类

本文详细介绍了Kotlin中的枚举类用法,包括基本定义、初始化、匿名类、实现接口等。枚举类可以拥有自己的方法,实现接口,并且枚举常量之间可以相互转换。通过示例展示了如何在枚举中定义抽象方法并实现,以及枚举类的常用方法如`valueOf`和`values`的使用。此外,还讨论了枚举类在实现接口时的灵活性。
摘要由CSDN通过智能技术生成

枚举类

基本用法

enum class Season {
    SPRING,SUMMER,AUTUMN,WINTER
}

初始化

enum class Color(val rgb: Int) {
    RED(0xFF0000),
    GREEN(0x00FF00),
    BLUE(0x0000FF)
}

匿名类

枚举类中的每个实例也可以有自己的方法,或者实现外面的方法。

enum class ProtocolState {
    WAITING {
        override fun signal() = TALKING
    },

    TALKING {
        override fun signal() = WAITING
    };

    abstract fun signal(): ProtocolState
}

当枚举类中有任何的成员时,需要用分号将成员与枚举常量分割。

枚举类实现接口

枚举类可以实现接口,但是不能继承类,实现的接口中的抽象方法可以由枚举类统一实现,也可以由每个枚举常量单独实现。

enum class IntArithmetics : BinaryOperator<Int>, IntBinaryOperator {
    PLUS {
        override fun apply(t: Int, u: Int): Int = t + u
    },
    TIMES {
        override fun apply(t: Int, u: Int): Int = t * u
    };

    override fun applyAsInt(t: Int, u: Int) = apply(t, u)
}

枚举类的使用

每个枚举类都有下面两个方法和两个属性:

EnumClass.valueOf(value: String): EnumClass
EnumClass.values(): Array<EnumClass>

val name: String
val ordinal: Int

具体使用如下:

var red = Color.RED
var valueOf = Color.valueOf("RED")
assertTrue { red == valueOf }

var values = Color.values()
for(i in values.indices) {
    println("name: ${values[i].name}, order: ${values[i].ordinal}")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

morris131

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值