Kotlin学习之枚举类

枚举类最基本的用法是实现一个类型安全的枚举。

什么叫类型安全的枚举类呢?

在java中像Color里面就有很常见的:Color.BLACK,Color.WHITE之类的,像Color的这种设计就被称作“类型安全枚举(typesafe enum)”,每一个枚举都是这个枚举类的实例而且不提供公共的构造方法。

在kotlin中:
eg:

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

枚举常量用逗号分开。

枚举初始化:

每一个枚举都是枚举类的实例,它们可以被初始化:
eg:

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

匿名类

枚举常量也可以被定义在他们自己的匿名类里。
eg:

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

与它对应的方法还有重写基方法。注意,和java一样,枚举类定义了任何成员,都要将成员和枚举常量用分号隔开。
eg:

enum class Direction {
NORTH, SOUTH, WEST, EAST ;
var i:Int=7;
}

使用枚举常量

和java一样,kotlin中的枚举类可以通过合成方法来列出定义了的枚举常量而且通过它的名字来获取枚举常量。这些方法的签名如下(假设枚举类的名字就是EnumClass):

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

当枚举类中没有找到指定的枚举常量名的时候,valueOf会抛出IllegalArgumentException
在枚举类的声明中每个枚举常量都有属性去获取它的名字和位置。

val name: String
val ordinal: Int

枚举常量也实现了Comparable接口,在枚举类中定义枚举常量时用自然顺序做为顺序。

每日一补:在kotlin中用when代替了switch分支,这个风格与c就很像了,用法如下:

when (x) {
1 -> print(“x == 1”)
2 -> print(“x == 2”)
else -> { // Note the block
print(“x is neither 1 nor 2”)
}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值