/**
* 枚举
* 1.枚举中若除了枚举值以外还有其他的方法,需要使用分号隔开
* 2.其中默认带有的属性ordinal表示该枚举值定义的时候排列的位置
* 3.枚举也是类的一种,可以修改构造函数,也可以添加成员
* 4.可以提升代码的表现力,但有一定的开销
*/
enum class LogLevel { //日志打印等级
VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT
}
class LogLevel2 protected constructor() { //此写法等价于LogLevel的写法
companion object {
val VERBOSE = LogLevel2()
val DEBUG = LogLevel2()
val INFO = LogLevel2()
val WARN = LogLevel2()
val ERROR = LogLevel2()
val ASSERT = LogLevel2()
}
}
enum class LogLevel3(val id: Int) { //日志打印等级
VERBOSE(0), DEBUG(1), INFO(2), WARN(3), ERROR(4), ASSERT(5);
fun getTag(): String {
return "$id,$name" //此处的name对应枚举值的名字
}
override fun toString(): String {
return "$name,$ordinal" //ordinal表示该枚举值定义的时候排列的位置
}
}
class LogLevel4 protected constructor(val id: Int) { //此写法等价于LogLevel3的写法
companion object {
val VERBOSE = LogLevel4(0)
val DEBUG = LogLevel4(1)
val INFO = LogLevel4(2)
val WARN = LogLevel4(3)
val ERROR = LogLevel4(4)
val ASSERT = LogLevel4(5)
}
fun getTag(): String {
return "$id"
}
}
fun main(args: Array<String>) {
println(LogLevel3.DEBUG.getTag())
println(LogLevel3.DEBUG.ordinal) //ordinal表示该枚举值定义的时候排列的位置
LogLevel3.values().map(::println) //values表示列出所有枚举值
println(LogLevel3.valueOf("ERROR")) //使用valueOf方法可以拿到枚举值的实例
println(LogLevel4.ERROR.getTag())
}
Kotlin学习笔记(四十)枚举
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 初始化 因为每一个枚举都是枚举类的实例,所以他们可以是初始化过的。 匿名类 枚举常量也可以声明自己的匿名类 抽象类...