(Kotlin高级特性三)Kotlin密封类(Sealed Class)在何时比枚举更适用? - 指南

news/2025/11/16 23:01:39/文章来源:https://www.cnblogs.com/gccbuaa/p/19229270

代数数据类型在 Kotlin 中的体现。它们最核心的区别在于:就是密封类和枚举都是用来表示受限类层次结构的利器,它们都子类类型的集合就是枚举是单例实例的集合,而密封类。这个根本区别决定了它们各自的适用场景。”


核心区别:实例 vs. 类型

  • 枚举:定义了一组固定的、可数的常量值。每个枚举常量都是其枚举类的单个实例

    • 例如:enum class Direction { NORTH, SOUTH, EAST, WEST }NORTH 就是 Direction 类型的一个唯一实例。

  • 密封类:定义了一组固定的、可数的子类型。每个子类都可能有多个不同的实例,并且这些实例可以携带不同的状态(数据)。

    • 例如:sealed class Result<out T>,其子类 data class Success<out T>(val data: T)data class Error(val exception: Exception)。你可以有无数个 Success("hello")Success(42) 的实例,它们都是 Success 子类型的实例。

这个“实例与类型”的区别,是解答这个问题的基石。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/967448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年 11 月冷拉/冷拔扁钢厂家推荐排行榜,冷拉扁钢,冷拔扁钢,精密冷拉扁钢,高强度冷拔扁钢公司推荐

2025年11月冷拉/冷拔扁钢厂家推荐排行榜 行业背景分析 冷拉/冷拔扁钢作为现代制造业的重要基础材料,在机械制造、汽车工业、电梯制造等领域发挥着关键作用。随着我国制造业向高质量发展转型,对冷拉扁钢、冷拔扁钢等精…

20232309 2025-2026-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 1.1学习内容几类信息搜集的方向 各类强大的信息搜集相关工具 网络踩点流程 网络扫描方式1.2实验任务从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系…

20232421 2025-2026-1 《网络与系统攻防技术》实验五实验报告

1.实践内容从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:使用whois…

CIO的能力

目录背景和价值沟通技术战略运营参考资料 背景和价值沟通 技术 战略 一是对企业战略本身的理解;二是对战略目标、业务目标、商业模式三者及其相互关系的理解 运营 运营是企业不可缺少的工作事项,也决定了企业的生死。…

20232326 2025-2026-1 《网络与系统攻防技术》实验五实验报告

一、实验内容 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息: DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:…

LangChain4j实战-工具(函数调用)Tools(Function Calling)

LangChain4j实战-工具(函数调用)Tools(Function Calling) Tools(Function Calling)的概念 有一个概念被称为"工具(Tools)"或者"函数调用(function calling)"。它允许LLM在必要时调用一个或多个可用…

应用安全 --- frida成功的关键 之 时机

应用安全 --- frida成功的关键 之 时机比如我要hook一个so中的初始化函数,js写好后每次执行so加载不一定来的及时hook这个函数。 不一定每次都会成功hook,我的方法是通过多次尝试或者加入延时调用或者

小米路由器通过电脑使用手机usb共享网络联网教程

小米路由器通过电脑使用手机usb共享网络联网教程小米路由器通过电脑使用手机usb共享网络联网教程本教程旨在面临手机热点局域网图像传输速率不够,需要使用路由器便捷调试,又因为场地移动性较大导致路由器联网困难的场…

第27天(简单题中等题 二分查找)

打卡第二十七天 2道中等题题目:思路1: 预处理所有的n位数起始数组 二分法查找合适区间 根据下标进行返回。代码: class Solution { public:int findNthDigit(int n) {int digit = 1;//当前处理的数字位数(从1位数开始…

题解:P14452 [ICPC 2025 Xian R] Follow the Penguins

(为什么还没有人写题解) Solution 最暴力的方式肯定是直接按时间顺序模拟,但是会因为时间过长而超时,所以我们只在有效的时间点进行操作就好了。 有效的时间点自然是企鹅相遇的时候,那么就可以用一个 \(\mathtt{s…

Atcoder 432 A-F 总结+题解

总结 A,B,C,E 考场上了,很快就打出了正解。没什么问题。 D 考场上没有写出来后来发觉是简单的思路,但是精妙的做法。 F 挺难的。搜正常的题解基本没搜到。最后还是补出来了。希望能给出来一个大家都看得懂的一个正…

用 Rust 实现验证码识别

在 Rust 中,我们可以使用一些外部库来处理图像和执行 OCR 任务。可以使用 image 库来处理图像数据,结合 tesseract 库来进行 OCR 识别。 更多内容访问ttocr.com或联系1436423940 步骤 安装 Rust 和 Cargo 首先,确保…

结合前缀和进行差分数组的学习理解

结合前缀和进行差分数组的学习理解背景 前缀和数组是记录前i个数组元素累加和的辅助数组, 是为了高效地频繁查询不可变数组的区间和, 避免每次针对不同区间重复遍历原数组再进行求和, 一般的, 原数组nums前i个元素…

Rust 实现验证码识别

我们将结合 Rust 的图像处理库和 tesseract OCR 来实现验证码识别。 步骤 更多内容访问ttocr.com或联系1436423940 安装 Rust 你可以从 Rust 官网 下载并安装 Rust。 创建新项目 使用以下命令创建一个新的 Rust 项目:…

高安全性 PHP 2FA 开发指南:Authenticator 扫码验证实现方案

高安全性 PHP 2FA 开发指南:Authenticator 扫码验证实现方案本文详解 PHP 环境下基于 TOTP 协议的双因素认证(2FA)实现方案,核心依赖 robthree/twofactorauth 与 bacon/bacon-qr-code 扩展,需配合 php-imagick 组…

20232417 2025-2026-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 1.1实验要求 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式、该域名对应IP地址、IP地址注册人及联系方式、IP地址所在国家、城市和具体地…

Elixir 实现验证码识别

在 Elixir 中,可以借助外部的库来进行图像处理和 OCR(光学字符识别)。常用的图像处理库是 Mogrify,而 OCR 识别可以通过调用外部程序(如 tesseract)来实现。 步骤 安装 Elixir 你可以从 Elixir 官网 下载并安装 …

2025 年空运物流公司推荐排行榜(广东地区重点推荐) 广州 / 深圳 / 佛山 / 东莞 ⇄ 澳洲 / 新西兰 / 悉尼 / 新加坡 / 墨尔本 空运专线物流公司推荐

2025 年空运物流公司推荐排行榜(广东地区重点推荐) 广州 / 深圳 / 佛山 / 东莞 ⇄ 澳洲 / 新西兰 / 悉尼 / 新加坡 / 墨尔本 空运专线物流公司推荐引言 随着珠三角地区跨境贸易与电商业务的快速发展,广州、深圳、佛…

终结挑战的元回应 ——当问题本身成为答案的生成器

终结挑战的元回应 ——当问题本身成为答案的生成器序:挑战的黄昏 我们站在一个时代的拐点:所有试图"解决"挑战的努力,最终都成了更大挑战的孵化器。气候工程引发生态链式反应,AI对齐催生价值悖论,基因编…

[学习笔记] JMM 汇总:从概念到底层原理

Java 内存模型(JMM)是 Java 为保障多线程程序在不同硬件和操作系统上行为一致而设计的一套内存可见性与操作顺序规范。它通过抽象出主内存(共享)与工作内存(线程私有)的交互机制,定义了线程如何读写共享变量,并…