sealed class-kotlin中的封闭类

devtools/2024/10/24 3:28:33/

在 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
}
  • 子类: NetworkErrorTimeoutErrorError 的子类,表示具体的错误类型。UnknownError 是一个对象表示特定的错误状态。
  • 类型安全: 使用 when 表达式处理错误时,编译器会确保覆盖所有可能的子类,减少了遗漏处理某些错误的风险。
  • 扩展性: 如果需要增加新的错误类型,只需在同一文件中添加新的子类,保持代码结构的清晰性。

http://www.ppmy.cn/devtools/128346.html

相关文章

LeetCode15 三数之和 - “贪心+双指针: 基于”两数之和“的拓展题“

Leetcode 15: 三数之和 题目链接 发布在LeetCode上的题解 思路 这道题的思路建立在 167.两数之和 的基础上。先来看看”两数之和“的大概题意: 已知一个非递减的数组,找出满足相加之和等于目标数 target 的两个数,假设每个输…

Vue项目中实现拖拽上传附件:原生JS与Element UI组件方法对比

在现代化的Web应用中,文件上传是一个基本功能。随着技术的发展,拖拽上传已经成为提升用户体验的一个重要特性。在Vue项目中,我们可以通过原生JavaScript或使用Element UI组件来实现这一功能。下面我们将分别介绍这两种方法,并对比…

小新学习K8s第一天之K8s基础概念

目录 一、Kubernetes(K8s)概述 1.1、什么是K8s 1.2、K8s的作用 1.3、K8s的功能 二、K8s的特性 2.1、弹性伸缩 2.2、自我修复 2.3、服务发现和负载均衡 2.4、自动发布(默认滚动发布模式)和回滚 2.5、集中化配置管理和密钥…

Linux学习_1

第0章Linux基础入门 主要包括什么是计算机,操作系统简介,Linux入门,常见Linux版本介绍,Linux认证,搭建Linux学习环境,这里主要写一下有关Linux操作的部分 搭建Linux学习环境 安装Linux操作系统&#xff08…

测网速小程序,纯前端

搜索:证寸照制作 源码介绍: 测网速小程序源码,是一款纯前端无需服务器的测网速小程序,依赖百度开发者中心js接口,真正的永久使用的小工具源码,很实用,可以单独运行,测网速很流畅~ 合法域名: ht…

基于深度学习的生物启发的学习系统

基于深度学习的生物启发学习系统(Biologically Inspired Learning Systems)旨在借鉴生物大脑的结构和学习机制,设计出更高效、更灵活的人工智能系统。这类系统融合了生物神经科学的研究成果,通过模仿大脑中的学习模式、记忆过程和…

【数据结构】滑动窗口算法详解:高效解决子串问题

滑动窗口(Sliding Window)是一种常用于处理数组或字符串中子序列问题的算法技巧。它通过维护一个窗口来限制待处理的数据范围,从而高效地解决问题,避免重复计算。它的时间复杂度通常为 O(N),相较于暴力破解&#xff08…

QGraphics类型学习使用【Qt】【C++】

QGraphics类型学习使用 需求过程全部完整代码 首先已知,QGraphicsView,QGraphicsScene, QGraphicsItem,分别称为:视图,场景,图元,图表就是各种各样的元素,图片元素,线条元…