Kotlin学习之枚举类
来源:互联网 发布:mysql replace into 编辑:程序博客网 时间:2024/05/17 23:34
枚举类最基本的用法是实现一个类型安全的枚举。
什么叫类型安全的枚举类呢?
在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”)
}
}
- Kotlin学习之枚举类
- Kotlin学习之-5.10 枚举类
- Kotlin之枚举类型
- Kotlin基础教程-枚举类
- Kotlin之泛型、枚举
- kotlin学习之嵌套类
- kotlin学习笔记——枚举、封闭类
- kotlin--嵌套类、枚举、对象
- kotlin学习day10: 枚举和字符串模板
- Kotlin学习之-5.1 类和继承
- # Kotlin学习之-5.6 数据类
- Kotlin学习之-5.7 封装类
- Kotlin-枚举
- kotlin 学习之 HelloWorld
- Kotlin学习之函数
- Kotlin学习之Range
- Kotlin 学习之数据类型
- Kotlin学习之跳转
- iOS框架整理
- Android Studio NDK开发 正确调用jni 及加入第三方so库需要注意的问题
- 修改golang最大内存限制
- Xcode7插件开发:从开发到拉到恶魔岛
- 堆排序
- Kotlin学习之枚举类
- VB 动态数组,文件读写
- 隐式转换
- 树莓派学习心得
- getRequestDispatcher 与 sendRedirect 的区别
- android实现水波纹效果
- centos7 kvm设置网桥
- 基于DM642的形心跟踪算法实现
- 用C++设计与开发