Kotlin学习之密封类

这篇具有很好参考价值的文章主要介绍了Kotlin学习之密封类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kotlin中的密封类:

kotlin中的密封类,用关键词Sealed修饰,且还有一个规定:Sealed类的子类应该是Sealed类的嵌套类,或者应该在与Sealed类相同的文件中声明。
当我们想定义一个有相同父类,但是有不同子类的时候,我们可以用枚举,抽象类,密封类来表示。
下面一一讲解它们之间的区别。

1. 枚举

enum class Result(val data: String) {
    SUCCESS("Success"),
    ERROR("Error")
}

但是如果我们ERROR中想定义一个Exception,那么枚举类是不允许的。

enum class Result(val message: String) {
    SUCCESS("Success"),
    ERROR(val exception: Exception) // 错误的写法
}

说到底,枚举它不能很好的扩展子类的状态

2. 密封类

sealed class Result
data class Success(val msg: String) : Result()
data class Error(val errorCode: Int, val exception: Exception) : Result()
object Other : Result()

可以看到,密封类的好处是,它的子类可以是普通类,data class, object等,而且子类可以自由扩展属性状态
另外,密封类的另外一个好处是,当我们用when的时候,不用再加else 判断了

 when (val result: Result = Success("success")) {
            is Success -> {
                Log.d("TAG", result.msg)
            }
            is Error -> {
                Log.d("TAG", "$result.errorCode")
            }
            is Other -> {
                Log.d("TAG", "Other")
            }
        }

3. 抽象类

我们将Result改成抽象类

abstract class Result
data class Success(val msg: String) : Result()
data class Error(val errorCode: Int, val exception: Exception) : Result()
object Other : Result()

在when中使用的时候,编译器会提示我们要加else分支。但是在密封类中,就不会存在这个问题,因为编译器知道密封类所有的子类,但是抽象类不一样了,因为我们可以在任意地方来继承实现子类,子类可能是很多的,所以需要加上else分支。
Kotlin学习之密封类,kotlin文章来源地址https://www.toymoban.com/news/detail-687746.html

到了这里,关于Kotlin学习之密封类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kotlin下载慢-kotlin compiler embeddable

    在androidStudio中第一次使用kotlin里时,kotlin compiler embeddable下载很慢,可以去官网自己下载: kotlin的仓库 选择一个合适的版本,点击View All  下载如下jar,点击...sha1链接,并记录他的sha1地址,后面要用这个sha1地址在本地新建目录  在本机找到目录: C:Users用户名.gradlecach

    2024年02月07日
    浏览(39)
  • Kotlin系列一(快速入门,kotlin的数据类型)

    kontlin可以写脚本 创建一个\\\"script.kts\\\"文件 编写脚本内容 使用 kotlinc -script script.kts 命令运行kotlin脚本 创建一个文件\\\"HelloWorld.kt\\\" 编写内容 使用 kotlinc HelloWorld.kt 编译kotlin代码 使用 kotlin HelloWorld Kt运行编译后的字节码 使用\\\"var\\\"定义变量,变量定义后值可以改变,且可以在定义

    2024年02月03日
    浏览(41)
  • Kotlin新手教程一(Kotlin简介及环境搭建)

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,它也可以被编译成为 JavaScript 源代码(方便在没有JVM的设备上运行)。它主要是由俄罗斯圣彼得堡的 JetBrains 开发团队所发展出来的编程语言,其名称来自于圣彼得堡附近的科特林岛。 完全兼容Java(很多Java程序员上手也

    2024年02月14日
    浏览(49)
  • 【Kotlin】从Java转向Kotlin,耐心看完这篇博客就够了。Kotlin快速入门教程分享

    适合群体:Java已经入门的人,如果是零基础,不要勉强!虽然没有深奥的术语,即使有也尽可能通俗易懂 。 Kotlin和Java都是Jvm语言,相同的部分能省则省(篇幅有限),重点是Kotlin。 示例代码的注释很重要。最好可以使用IDEA等开发工具运行一下。 最后创作不易,全部都是自

    2023年04月08日
    浏览(54)
  • 【kotlin 协程】万字协程 一篇完成kotlin 协程进阶

    Kotlin 中的协程提供了一种全新处理并发的方式,可以在 Android 平台上使用它来简化异步执行的代码。协程是从 Kotlin 1.3 版本开始引入,但这一概念在编程世界诞生的黎明之际就有了,最早使用协程的编程语言可以追溯到 1967 年的 Simula 语言。 在过去几年间,协程这个概念发展

    2024年02月07日
    浏览(51)
  • From Java To Kotlin 2:Kotlin 类型系统与泛型

    上期主要分享了 From Java To Kotlin 1 :空安全、扩展、函数、Lambda。 这是 From Java  to Kotlin   第二期。 From Java  to Kotlin  关键在于 思维的转变 。 Kotlin 中大部分语句是 表达式 。 表达式思维是一种编程思维。 编程思维是一种非常抽象的概念,很多时候是只可意会不可言传的。

    2024年02月08日
    浏览(54)
  • 当我再次用Kotlin完成五年前已经通过Kotlin完成的项目后

      近日来对Kotlin的使用频率越来越高, 也对自己近年来写过的Kotlin代码尝试进行一个简单的整理. 翻到了自己五年前第一次使用Kotlin来完成的一个项目([贝塞尔曲线](https://juejin.cn/post/6844903556173004807)), 一时兴起, 又用发展到现在的Kotlin和Compose再次完成了这个项目. 也一遍来看看

    2024年02月03日
    浏览(35)
  • Kotlin: Module was compiled with an incompatible version of Kotlin

    背景: 使用intellij-idea工具,spring boot项目,使用的maven 问题: 项目中没有依赖Kotlin,结果报错Kotlin版本问题,如下 Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.7.1, expected version is 1.1.15. 解决方案: Just go to the Build menu and click on the rebuild

    2024年02月06日
    浏览(50)
  • Android开发中,JDK版本,Gradle版本,Kotlin插件与Kotlin版本等各自对应关系

    一、Gradle版本和Java版本对应关系 二、Gradle版本和Kotlin版本对应关系 三、Gradle版本和Gradle插件版本匹配关系 可以在Android Studio的 File Project Structure Project 菜单中指定插件版本,也可以在顶级 build.gradle 文件中进行修改

    2024年03月15日
    浏览(66)
  • 【送书第三期】强势挑战Java,Kotlin杀回TIOBE榜单Top 20!学Kotlin看哪些书?

    与Java一样,Kotlin也是用于Android应用程序开发的编程语言,是Android官方支持的第二种编程语言。 2016年Kotlin正式发布,在Android“官宣”后曾在2017年进入TIOBE编程语言排行榜前20,这次回归用了5年多时间。如果说第一次上榜是靠“蹭热点”,那么这次上榜完全是“凭实力”。

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包