在 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
}
- 子类:
NetworkError
和TimeoutError
是Error
的子类,表示具体的错误类型。UnknownError
是一个对象表示特定的错误状态。 - 类型安全: 使用
when
表达式处理错误时,编译器会确保覆盖所有可能的子类,减少了遗漏处理某些错误的风险。 - 扩展性: 如果需要增加新的错误类型,只需在同一文件中添加新的子类,保持代码结构的清晰性。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » sealed class-kotlin中的封闭类
发表评论 取消回复