Kotlin 密封类 Sealed的总结

时间:2021-7-21 作者:qvyue

概念
sealed修饰的类 在kotlin中是密封类 密封类 描述的是 父类和子类的关系
1、密封类和它的子类必须定义在一个文件中,而在kotlin1.0的时候 密封类的子类必须定义在密封类 里面
2、Sealed types cannot be instantiated 密封类是不能被初始化的
如何理解 这个父类和子类的关系呢?
可以这样理解 父类 只是一个组织者(对于子类来说)(除了这个功能它什么也做不了)甚至初使化都做不到,具体可以出面做事情的 是子 类
一个密封类:

sealed class LoadResult {
    data class Error(val throwable: Throwable):LoadResult()
    data class Page constructor(
        /**
         * Loaded data
         */
        val data: List,
        /**
         * [Key] for previous page if more data can be loaded in that direction, `null`
         * otherwise.
         */
        val prevKey: Key?,
        /**
         * [Key] for next page if more data can be loaded in that direction, `null` otherwise.
         */
        val nextKey: Key?,
        /**
         * Optional count of items before the loaded data.
         */
    ):LoadResult()
}

使用:

fun main() {
//    LoadResult(); //会报错 因为密封类不能被初使化
    println("懂了吗")
    functionTest()
}
fun functionTest (): LoadResult {
    //虽然返回类型是LoadResult但是我们只能返回其子类 因为密封类不能被初使化
    var exception:Exception = Exception("")
    return  LoadResult.Error(exception)
}
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。