Kotlin学习笔记3-10 类和对象-枚举类

本文介绍了Kotlin中枚举类的基本用法,包括枚举常量的定义、初始化及匿名类的使用,并展示了如何在枚举常量中重写方法。此外,还介绍了枚举常量的属性和枚举类成员的使用。

枚举类

Kotlin官网:Classes and Objects-Enum Classes
基本用法和Java相同,每个枚举常量都是个对象,逗号分隔

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

初始化

通过主构造函数

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
}

枚举类可以定义方法,在枚举常量的匿名类中重写。
枚举常量和枚举类的成员用分号分隔。
对于嵌套类型,只能包含内部类(inner class),不能包含其他嵌套类型(Kotlin1.2中废除)。

使用枚举常量

和Java相同,枚举常量包含列出所有枚举常量的方法和通过名字获取枚举常量的方法。

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

通过名字过去枚举常量valueOf()对于不存在的名字会抛出”IllegalArgumentException”。
自Kotlin1.1起增加带泛型的函数

enum class RGB { RED, GREEN, BLUE }

inline fun <reified T : Enum<T>> printAllValues() {
    print(enumValues<T>().joinToString { it.name })
}

printAllValues<RGB>() // prints RED, GREEN, BLUE

每个枚举常量都包含名字和顺序(枚举常量在枚举类中定义的顺序)两个属性:

val name: String
val ordinal: Int

枚举常量也实现了Comparable接口,比较规则为顺序属性的自然排序(在枚举类中定义的顺序)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值