当前位置: 首页 > article >正文

sealed class-kotlin中的封闭类

在 Kotlin 中,sealed class密封类)是一种特殊的类,用于限制继承的类的数量。密封类可以被用来表示一组有限的类型,通常用于状态管理或表达多种可能的错误类型。

密封类用 sealed 关键字定义,这意味着只能在同一个文件中声明其子类。它有助于确保类型的安全性,因为编译器能够知道所有可能的子类类型。

sealed class Error : Exception() {
    data class NetworkError(val message: String) : Error() // 网络错误
    data class TimeoutError(val duration: Long) : Error() // 超时错误
    object UnknownError : Error() // 未知错误
}

fun handleError(error: Error) {
    when (error) {
        is Error.NetworkError -> println("Network error: ${error.message}")
        is Error.TimeoutError -> println("Timeout after ${error.duration} ms")
        Error.UnknownError -> println("An unknown error occurred")
    }
}

fun main() {
    val error1: Error = Error.NetworkError("Unable to connect to server")
    val error2: Error = Error.TimeoutError(5000)
    val error3: Error = Error.UnknownError

    handleError(error1) // 输出: Network error: Unable to connect to server
    handleError(error2) // 输出: Timeout after 5000 ms
    handleError(error3) // 输出: An unknown error occurred
}
  • 子类: NetworkErrorTimeoutErrorError 的子类,表示具体的错误类型。UnknownError 是一个对象表示特定的错误状态。
  • 类型安全: 使用 when 表达式处理错误时,编译器会确保覆盖所有可能的子类,减少了遗漏处理某些错误的风险。
  • 扩展性: 如果需要增加新的错误类型,只需在同一文件中添加新的子类,保持代码结构的清晰性。

http://www.kler.cn/news/362429.html

相关文章:

  • sql注入 --二次注入堆叠注入文件读取getshell
  • AWD的复现
  • Rust语法基础
  • 管理篇(顶级思维模型(31个))(待做)
  • Vue93 vue3 watch监视ref属性的说明
  • android openGL ES详解——混合
  • Flume面试整理-常见的Source类型
  • 陆金所控股第三季度财报分析:增长困局与逆势突围
  • Ascend C算子编程和C++基础 Mission Sinh算子开发-基于ModelArts平台
  • “摄像机”跟随及攻击抖动实现
  • 比XML更简洁的配置文件——yml(2min了解)
  • 重构复杂简单变量之用子类替换类型码
  • 【AIGC】AI时代降临,AI文案写作、AI绘画、AI数据处理
  • PHP编程基础
  • 使用OpenCV实现基于FisherFaces的人脸识别
  • 代码笔记:Linux系统上解压文件
  • VScode分文件编写C++报错 | 如何进行VScode分文件编写C++ | 不懂也能轻松解决版
  • vscode使用pnpm报错
  • C++大坑之——多继承(菱形继承)
  • Java的方法传参机制
  • Nvidia在Jetson NX上模型量化
  • 关于武汉芯景科技有限公司的限流开关芯片XJ6241开发指南(兼容LTC4411)
  • 学习笔记每日一题——缺失的第一个正数
  • 【原创】java+ssm+mysql计算机等级考试网系统设计与实现
  • Android compose 重建流程1
  • opencv 图像BGR三通道分离 split 与 合并 merge -python 实现