Kotlin-17.枚举类(enum class)

本文详细介绍了Kotlin中枚举类的使用方法,包括基本用法、初始化、匿名类及如何访问枚举常量等内容,并提供了丰富的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档: http://kotlinlang.org/docs/reference/enum-classes.html

1.枚举类(enum class)

枚举类(enum class)基本用法,特性,和java差不多:
    enum class Direction {
        //每个枚举常量(Enum Constants)都是一个对象,用逗号分隔
        NORTH, SOUTH, WEST, EAST
    }

2.初始化(Initialization)

因为每个枚举常量都是一个对象,所以都有初始化:
    enum class Color(val rgb: Int) {
            RED(0xFF0000),
            GREEN(0x00FF00),
            BLUE(0x0000FF)
    }

3.匿名类(Anonymous Classes)

每个枚举常量都能声明匿名类:
    enum class ProtocolState {            
        WAITING {
            override fun signal() = TALKING
        },
        TALKING {
            override fun signal() = WAITING                
        }; //注意:像Java一样,Kotlin枚举常量也需要分号;分隔!

        abstract fun signal(): ProtocolState
    }

4.使用枚举常量(Enum Constants)

像Java一样,Kotlin枚举类也有合成方法,允许访问枚举常量:
    enum class RGB { 
        RED, GREEN, BLUE 
    }
    //通过名字获取枚举常量
    RGB.valueOf(value: String): EnumClass
    //获取枚举常量列表
    RGB.values(): Array<EnumClass>        

自Kotlin 1.1起,可用enumValues<T>()和enumValueOf<T>() 以泛型方式访问枚举常量:
    enum class RGB { 
        RED, GREEN, BLUE 
    }
    inline fun <reified T : Enum<T>> printAllValues() {
        print(enumValues<T>().joinToString { it.name })
    }
    printAllValues<RGB>() //输出 RED, GREEN, BLUE

像Java一样,每个枚举常量都有两个属性-声明名字和声明位置:
    val name: String
    val ordinal: Int

枚举常量也实现了Comparable接口, 其中自然顺序(natural order)是在枚举类中的定义顺序!

简书:http://www.jianshu.com/p/6af7998af8d1
优快云博客: http://blog.youkuaiyun.com/qq_32115439/article/details/73692421
GitHub博客:http://lioil.win/2017/06/24/Kotlin-enum-classes.html
Coding博客:http://c.lioil.win/2017/06/24/Kotlin-enum-classes.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值