sealed class-kotlin中的封闭类

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

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

Kotlin 复制代码
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 表达式处理错误时,编译器会确保覆盖所有可能的子类,减少了遗漏处理某些错误的风险。
  • 扩展性: 如果需要增加新的错误类型,只需在同一文件中添加新的子类,保持代码结构的清晰性。
相关推荐
幻雨様2 小时前
UE5多人MOBA+GAS 45、制作冲刺技能
android·ue5
Jerry说前后端4 小时前
Android 数据可视化开发:从技术选型到性能优化
android·信息可视化·性能优化
Meteors.5 小时前
Android约束布局(ConstraintLayout)常用属性
android
alexhilton5 小时前
玩转Shader之学会如何变形画布
android·kotlin·android jetpack
whysqwhw9 小时前
安卓图片性能优化技巧
android
风往哪边走10 小时前
自定义底部筛选弹框
android
Yyyy48210 小时前
MyCAT基础概念
android
Android轮子哥11 小时前
尝试解决 Android 适配最后一公里
android
雨白12 小时前
OkHttp 源码解析:enqueue 非同步流程与 Dispatcher 调度
android
风往哪边走12 小时前
自定义仿日历组件弹框
android