package kotlinall.chapter4
/**
* 枚举是实例可数的类,枚举也是类
* 可以修改构造,添加成员
* 可以使代码清晰 但是需要一定开销
*/
enum class LogLevel(val id:Int){
VERBOSE(1),DEBUG(4),INFO(2),WAR(3),ERROR(5),ASSERT(7);
fun getTag():String{
return "$id $name"
}
override fun toString(): String {
return "$name $id"
}
}
class LogLevel2 protected constructor(){//等价的写法
private var a:Int = 3
val VERBOSE = LogLevel2()
val DEBUG = LogLevel2()
val INFO = LogLevel2()
val WARN = LogLevel2()
val ERROR = LogLevel2()
}
private var a:Int = 0//定义地方的范围
//密封类
sealed class PlayerCmd{//sealed class 子类只能定义在同一个文件中
class Paly(val url:String,val pos:Int):PlayerCmd()
class Seek(val pos:Long):PlayerCmd()
object Pause:PlayerCmd()
object Resume:PlayerCmd()
object Stop:PlayerCmd()
}
fun main(args: Array<String>) {
println(LogLevel.DEBUG.getTag())
println(LogLevel.DEBUG.ordinal)//定义的位置
println(LogLevel.values().map(::println))//打印所有的值
println(LogLevel.valueOf("error".toUpperCase()))//根据名称找到对象
a = 0
}
kotlin枚举和密封类
最新推荐文章于 2022-12-28 21:31:36 发布