Kotlin学习之类与对象篇—枚举类

枚举类的基本用法是实现类型安全枚举:

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
}

如果枚举类中定义了其它成员,需要用分号将枚举常量和其它成员隔开,就像Java一样。

实现接口

一个枚举类可以实现接口(但是不能继承类), 可以选择统一实现接口的成员或者每个枚举在其匿名类中单独实现.

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
    };
    //统一实行方法applyAsInt
    override fun applyAsInt(t: Int, u: Int) = apply(t, u)
}


使用枚举常量

和Java一样,Kotlin也有列出枚举类中所有枚举常量和通过名字获取单个枚举的方法。
假设枚举类的名字为EnumClass

//通过名字获取单个枚举
EnumClass.valueOf(value: String): EnumClass
//获取所有枚举
EnumClass.values(): Array<EnumClass>

所有枚举常量都有两个固定的属性: nameordinal

  • name: String 返回枚举的名称
  • ordinal: Int 返回枚举在所有枚举常量中的位置,初始位置为0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值