Kotlin(九)之枚举
·
定义
-
Kotlin使用
enum class定义枚举类。枚举类是一种特殊的类,可以有自己的属性、方法、可以实现一个或多个接口,也可以定义构造器 -
使用enum定义的枚举类默认继承
kotlin.Enum类,所以枚举类不能显示继承其他父类。kotlin.Enum实现了kotlin.Comparable接口 -
使用enum定义的非抽象的枚举类不能使用open修饰,因此枚举类不能派生子类
-
枚举类的构造器只能使用private修饰,如果省略修饰,默认是private。
-
枚举类的所有实例必须在枚举类的第一行显示指定,多个实例使用逗号分隔。
-
案例
enum class Season { SPRING, SUMMER, FALL, WINER } fun main() { //1. 遍历 for (seaon in Season.values()) { println(seaon) } //2.遍历 enumValues<Season>().forEach { println(it.name) } //SPRING val se = Season.valueOf("SPRING") println(se) //WINER println(Season.WINER.name) //WINER println(Season.WINER.toString()) //3 println(Season.WINER.ordinal) //true println(Season.SPRING.equals(se)) }
方法与属性
-
枚举的属性都是只读属性,枚举必须在构造器中为这些属性指定初始值,或者在初始化块中执行初始值
enum class Status(val value: Int, val desc: String) { NORMAL(0, "正常"), DELETE(1, "已删除"); fun printDesc() { when (this) { this -> println(this.desc) } } } fun main() { Status.DELETE.printDesc() } -
实现接口:枚举类可以实现一个或多个接口.枚举类也可以包含抽象方法
interface Desc { fun printDesc(): Unit; } enum class Status2(val value: Int, val desc: String) : Desc { NORMAL(0, "正常") { override fun printDesc() { println(this.desc) } }, DELETE(1, "已删除") { override fun printDesc() { println(this.desc) } }; abstract override fun printDesc(): Unit; }
更多推荐



所有评论(0)