九台区建设银行网站,软件定制论坛,wordpress FTP媒体库,健身餐的网站怎么做在 Kotlin 中#xff0c;sealed class#xff08;密封类#xff09;是一种特殊的类#xff0c;用于限制继承的类的数量。密封类可以被用来表示一组有限的类型#xff0c;通常用于状态管理或表达多种可能的错误类型。
密封类用 sealed 关键字定义#xff0c;这意味着只能…在 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.UnknownErrorhandleError(error1) // 输出: Network error: Unable to connect to serverhandleError(error2) // 输出: Timeout after 5000 mshandleError(error3) // 输出: An unknown error occurred
}子类: NetworkError 和 TimeoutError 是 Error 的子类表示具体的错误类型。UnknownError 是一个对象表示特定的错误状态。类型安全: 使用 when 表达式处理错误时编译器会确保覆盖所有可能的子类减少了遗漏处理某些错误的风险。扩展性: 如果需要增加新的错误类型只需在同一文件中添加新的子类保持代码结构的清晰性。