1、枚举

kotlin中提供类枚举的实现,与java相同。枚举可以带参数,如
enum Icon(val res: Int){MENU(R.drawable.menu),BACK(R.drawable.back)
}val backIcon = Icon.BACK.res

枚举可以通过字符串匹配名字来获取,也可以得到所以枚举的array,如

val back: Icon = Icon.valueOf("BACK")
val icons: Array<Icon> = Icon.values()

枚举也提供一些函数来获取名字和声明的位置

val name: String = Icon.BACK.name()
val position: Int = Icon.BACK.ordinal()

枚举根据顺序实现了Comparable接口,所以可以很方便的进行排序

2、封闭类sealed

用sealed修饰的类叫封闭类,它类似枚举enum,如:
sealed class Icon{class Menu(val id: Int) : Icon()class Back(val url: String) : Icon()object None : Icon()
}

可以看到它有固定个数的子类,而且子类与父类一起被定义出来。与enum不同的是,枚举的实例是唯一的,而封闭类可以有多个实例,它可以有不同的状态。

封闭类可以与when配合使用,如:
val result: String = when(icon){is Menu -> "xxx" + icon.idis Back -> icon.urlis None -> ""
}

3、异常Excaption

kotlin中的异常与java中相似,但是kotlin中的异常都是未经检查,表示不会强迫在任何地方使用try/catch。
(kotlin中有throw关键字,但是没有throws关键字)
throw与try/catch的使用与java中一样,但是在kotlin中它们都是表达式都可以返回值。具体见kotlin学习笔记——过程控制和Range表达式

总结:

到本文章为止,kotlin学习笔记系列就结束了,这个系列主要是整理了学习kotlin过程中的一些知识点。但是kotlin学习笔记系列的专栏还会继续,会不定时的分享一些在使用kotlin开发过程中遇到的问题和新的知识,谢谢!

kotlin学习笔记——枚举、封闭类相关推荐

  1. Kotlin学习笔记12——数据类和密封类

    Kotlin学习笔记12--数据类和密封类 前言 数据类 在类体中声明的属性 复制 componentN 解构声明 密封类 尾巴 前言 上一篇,我们学习了Kotlin中的拓展,今天继续来学习Kotli ...

  2. Kotlin学习笔记 第二章 类与对象 第十一节 枚举类 第八节密封类

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  3. Kotlin学习笔记 第二章 类与对象 第十四 十五节 委托 委托属性

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  4. Kotlin学习笔记 第二章 类与对象 第七节 数据类

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  5. Kotlin学习笔记 第二章 类与对象 第一节类与继承(补)

    参考链接 Kotlin官方文档 Kotlin docs | Kotlin 本系列为参考Kotlin中文文档 kotlin官方文档2020版.pdf-其它文档类资源-CSDN下载 第二章 第一节 类与继 ...

  6. Kotlin学习笔记 第二章 类与对象 第十二 十三节 对象表达式与对象声明 类型别名

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  7. Kotlin学习笔记 第二章 类与对象 第十节 内部类嵌套类

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  8. Kotlin学习笔记 第二章 类与对象 第五节 可见性 第六节 扩展

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

  9. Kotlin学习笔记 第二章 类与对象 第三节接口 第四节 函数式接口

    参考链接 Kotlin官方文档 https://kotlinlang.org/docs/home.html 中文网站 https://www.kotlincn.net/docs/reference/p ...

最新文章

  1. PXE全自动安装操作系统--centos7.3学习笔记
  2. 内江将被打造成四川物联网西部副中心
  3. centos 7 文档服务器,centos 7 web服务器
  4. [Go] go get获取官方库被墙解决
  5. 插入数据到hive_Hive实现网站PV分析
  6. php js动态删除数组元素,javascript如何删除数组中的指定元素
  7. 个人成长:拉开你和同龄人差距的100个顶级认知
  8. 夫妻两一个两年内3张卡9次逾期,一人4次,还能办理房贷吗?
  9. asp中日期时间函数介绍
  10. OpenCV入门及应用案例:手把手教你做DNN图像分类
  11. 机器学习速成课程 | 练习 | Google Development——编程练习:逻辑回归
  12. 利用SVN的post-commit钩子实现多项目自动同步
  13. P1540 机器翻译 模拟
  14. 隐藏a标签seo_SEO网站优化,新手SEO常犯的五个错误!
  15. MySQL8.0.19解压安装教程
  16. 在腾讯云 EMR 上使用 GooseFS 加速大数据计算服务
  17. NMOS、PMOS、PNP、NPN三极管 做开关使用时的电路设计
  18. python - 数据类型
  19. html怎么实现计算bmi,利用Javascript实现BMI计算器
  20. 两款Windows系统优化工具

热门文章

  1. 批量scp脚本——从多台机器拷贝文件
  2. @noi.ac - 488@ cleaner
  3. luogu P2791 幼儿园篮球题
  4. the little schemer 笔记(7)
  5. Oracle分析函数-rank() over(partition by...order by...)
  6. HDU——1418抱歉(平面欧拉公式)
  7. linux mysql 操作命令
  8. 经Apache将tomcat转用80port这两个域名
  9. 健身小管家--android app源码
  10. PETS公共英语三级大纲词汇4107个-D