news 2026/10/5 2:29:51

第068篇 sealed class:状态建模的利器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第068篇 sealed class:状态建模的利器

sealed class在 Kotlin 里的地位,相当于"用类型系统表达状态机"。它的价值不在语法,而在一个很实际的痛点:当一个值有多种可能形态时,怎么保证"处理了这几种形态"这件事不会漏。面试里问 sealed class,问的往往不是"是什么",而是"你用它解决过什么建模问题"和"它和枚举、when表达式的关系"。

先把结论放在前面:sealed class(1.5 起可写sealed interface) restricts 子类必须与父类同一文件内声明(1.5 后放宽到同一包/模块的编译单元),这让子类型集合是封闭且可穷举的。于是when表达式在 Kotlin 里被当作表达式处理——编译器知道所有分支,漏一个就编译报错,同时when有返回值。 核心用途是显式建模互斥状态,替代"多个可空字段 + 若干布尔标记"这种做法。

机制拆解

先说实现机制。sealed类在字节码层面是abstract类加一个PermittedSubclasses属性(JVM 的 sealed 类特性),子类编译后带上sealed标记。 运行时子类集合是可枚举的,所以 Kotlin 编译器才能在when里做穷举性检查——如果一个when

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 2:28:57

Android 自定义 View 从零到实战:手写 6 大高频组件,附绘制异常排查清单

摘要:从零手写 Android 自定义 View 的实战指南。深入拆解 Measure、Layout、Draw 三大核心步骤,带你完成月份选择器、防滚动列表、动态饼图、广告轮播等 6 个高频组件,并附赠绘制异常排查清单。全程代码可复制、可直接落地。 目录 ① 视图构建核心三步骤解析 1.1 onMeasure…

作者头像 李华
网站建设 2026/10/5 2:28:57

Python实战第14期:常用标准库

文章目录 引言:为什么需要标准库? 一、os模块 1. 导入os模块 2. 获取当前工作目录 3. 切换目录 4. 列出目录内容 5. 创建目录 6. 删除目录 7. 删除文件 8. 重命名文件或目录 9. 路径操作 10. 遍历目录树 11. 环境变量 12. 执行系统命令 二、datetime模块 1. 导入datetime模块…

作者头像 李华
网站建设 2026/10/5 2:28:28

Linux 权限别死记!一文搞懂 rwx、数字权限、目录权限坑点

这几天是国庆我久违的睡了一个大觉 目录 一、 root与普通用户的区分 二、Linux的权限管理 2.1 三种基本权限 2.2 权限的两种表示法:符号和数字 三、权限的修改与验证 四、三个关于权限的问题 4.1 进入一个目录需要哪些权限 4.2 读文件需要什么权限 4.3 写入…

作者头像 李华
网站建设 2026/10/5 2:28:07

交易最大的敌人,终于被机制打败

在金融交易市场中,绝大多数交易者的亏损,从来不是败给了行情,而是败给了自己。 无数交易数据和实战案例证明:市场的不确定性并不可怕,人性的确定性弱点才是交易亏损的核心根源。贪婪、恐惧、侥幸、犹豫、冲动、自负&am…

作者头像 李华