Kotlin 密封类与接口

密封的类和接口表示受限制的类层次结构,这些层次结构提供了对继承的更多控制;在定义密封类的模块和包之外,不能出现其他子类;密封类的每个实例都有一个来自有限集的类型,该类型在编译此类时是已知的;一旦编译了具有密封接口的模块,就不会出现新的实现

密封类类似于枚举类:枚举类型的值集也受到限制,但每个枚举常量仅作为一个实例存在,而密封类的子类可以有多个实例,每个实例都有自己的状态

使用 sealed 声明密封的类或接口

sealed interface Error

sealed class IOError(): Error

class FileReadError(val file: File): IOError()
class DatabaseError(val source: DataSource): IOError()

object RuntimeError : Error

使用密封类的关键好处在于使用 when 表达式的时候;如果能够验证语句覆盖了所有情况,就不需要为该语句再添加一个 else 子句

fun log(e: Error) = when(e) {
    is FileReadError -> { println("Error while reading file ${e.file}") }
    is DatabaseError -> { println("Error while reading from database ${e.source}") }
    is RuntimeError ->  { println("Runtime error") }
    // 不再需要 `else` 子句,因为已经覆盖了所有的情况
}

相关推荐

  1. Kotlin 密封接口

    2023-12-28 15:12:03       39 阅读
  2. Kotlin密封、枚举密封接口的对比分析

    2023-12-28 15:12:03       37 阅读
  3. Kotlin语法入门-密封密封接口(11)

    2023-12-28 15:12:03       10 阅读
  4. Kotlin(十三) 延迟初始化和密封

    2023-12-28 15:12:03       36 阅读
  5. 抽象接口

    2023-12-28 15:12:03       9 阅读
  6. 快速入门Kotlin对象

    2023-12-28 15:12:03       18 阅读
  7. Kotlin 接口

    2023-12-28 15:12:03       34 阅读
  8. kotlin 简单实现实体的Parcelable序列化接口

    2023-12-28 15:12:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-28 15:12:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-28 15:12:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-28 15:12:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-28 15:12:03       18 阅读

热门阅读

  1. 计算机网络的7层协议和4层协议的区别

    2023-12-28 15:12:03       38 阅读
  2. Linux:环境变量

    2023-12-28 15:12:03       32 阅读
  3. 2024 年软件工程将如何发展

    2023-12-28 15:12:03       26 阅读
  4. leetcode18. 四数之和

    2023-12-28 15:12:03       40 阅读
  5. go语言10进制与16进制转换

    2023-12-28 15:12:03       35 阅读
  6. 关于:网络安全

    2023-12-28 15:12:03       32 阅读
  7. mysql导入tab符号txt文件到数据库

    2023-12-28 15:12:03       33 阅读
  8. Vue.js

    Vue.js

    2023-12-28 15:12:03      26 阅读
  9. 如何判断网站服务器的访问承载量?

    2023-12-28 15:12:03       32 阅读
  10. html隐藏元素的方法

    2023-12-28 15:12:03       30 阅读
  11. Tomcat使用手册

    2023-12-28 15:12:03       27 阅读
  12. CSS标准盒子模型和怪异盒子模型

    2023-12-28 15:12:03       34 阅读
  13. 自然语言处理(NLP)技术

    2023-12-28 15:12:03       36 阅读
  14. Linux用wget/curl 发起post请求

    2023-12-28 15:12:03       35 阅读