kotlin枚举和密封类

本文深入探讨了Kotlin中的枚举类和密封类的特性与应用。枚举类不仅提供了有限实例集合,还支持自定义构造函数和成员函数,增强了代码的清晰性和安全性。密封类作为类型安全的设计,限制了子类的创建,适用于表达有限状态机或类型层次结构。通过具体示例,展示了如何在实际项目中有效利用这些特性。
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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值