1. enum class WEEK {星期一,星期二,星期三,星期四,星期五,星期六,星期日}

Kotlin 枚举类

枚举类最基本的用法是实现一个类型安全的枚举。

枚举常量用逗号分隔,每个枚举常量都是一个对象。

  1. enum class Color{
  2. RED,BLACK,BLUE,GREEN,WHITE
  3. }

枚举初始化

每一个枚举都是枚举类的实例,它们可以被初始化:

  1. enum class Color(val rgb: Int) {
  2. RED(0xFF0000),
  3. GREEN(0x00FF00),
  4. BLUE(0x0000FF)
  5. }

默认名称为枚举字符名,值从0开始。若需要指定值,则可以使用其构造函数:

  1. enum class Shape(value:Int){
  2. ovel(100),
  3. rectangle(200)
  4. }

枚举还支持以声明自己的匿名类及相应的方法、以及覆盖基类的方法。如:

  1. enum class ProtocolState {
  2. WAITING {
  3. override fun signal() = TALKING
  4. },
  5.  
  6. TALKING {
  7. override fun signal() = WAITING
  8. };
  9.  
  10. abstract fun signal(): ProtocolState
  11. }

如果枚举类定义任何成员,要使用分号将成员定义中的枚举常量定义分隔开


使用枚举常量

Kotlin 中的枚举类具有合成方法,允许遍历定义的枚举常量,并通过其名称获取枚举常数。

  1. EnumClass.valueOf(value: String): EnumClass // 转换指定 name 为枚举值,若未匹配成功,会抛出IllegalArgumentException
  2. EnumClass.values(): Array<EnumClass> // 以数组的形式,返回枚举值

获取枚举相关信息:

  1. val name: String //获取枚举名称
  2. val ordinal: Int //获取枚举值在所有枚举数组中定义的顺序

实例

  1. enum class Color{
  2. RED,BLACK,BLUE,GREEN,WHITE
  3. }
  4.  
  5. fun main(args: Array<String>) {
  6. var color:Color=Color.BLUE
  7.  
  8. println(Color.values())
  9. println(Color.valueOf("RED"))
  10. println(color.name)
  11. println(color.ordinal)
  12.  
  13. }
  1. Kotlin 1.1 起,可以使用 enumValues<T>()  enumValueOf<T>() 函数以泛型的方式访问枚举类中的常量
  1. enum class RGB { RED, GREEN, BLUE }
  2.  
  3. inline fun <reified T : Enum<T>> printAllValues() {
  4. print(enumValues<T>().joinToString { it.name })
  5. }
  6.  
  7. fun main(args: Array<String>) {
  8. printAllValues<RGB>() // 输出 RED, GREEN, BLUE
  9. }

kotlin基础 枚举的更多相关文章

  1. python基础——枚举类

    python基础——枚举类 当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份: JAN = 1 FEB = 2 MAR = 3 ... NOV = 11 DEC = 12 好处是简单 ...

  2. Kotlin基础篇(一)

    写在前面: 因为工作需要,目前转安卓开发,用的IDE是AS3.2版本,语言的话,用的是Kotlin.由于之前是做.NET的,没接触过这方面的东西,所以完全是小白一枚.所以想着开个博客,以此来记录自己的 ...

  3. Kotlin基础语法:变量、函数、类、枚举、控制流

    一切都需要从基础学起! 前言: 在Kotlin语言中,没有分号的概念了,也就是每一行代码,都不在需要用分号结束了 点击查看代码 定义 常量:val --相当于java当中的final 变量:var 关 ...

  4. Java基础——枚举详解

    前言: 在第一次学习面向对象编程时,我记得最深的一句话就是“万物皆对象”.于是我一直秉承着这个思想努力的学习着JAVA,直到学习到枚举(Enum)时,看着它颇为奇怪的语法……我一直在想,这TM是个什么 ...

  5. Kotlin基础(五)Kotlin的类型系统

    Kotlin的类型系统 一.可空类型 //s为null的话编译器会报错,没问号不能为空 fun strLen(s : String)=s.length //如果允许s为空可: fun strLen2( ...

  6. Kotlin基础(一)Kotlin快速入门

    Kotlin快速入门 一.函数 /* * 1.函数可以定义在文件最外层,不需要把它放在类中 * 2.可以省略结尾分号 * */ fun main(args: Array<String>) ...

  7. Kotlin基础知识

    1. 改进点/基础 //安全判空 val length = text?.length; //类型转换 if (object is Car) { var car = object as Ca } //操 ...

  8. 第二章(Kotlin基础)

    基本要素:函数和变量 函数 函数定义规则 函数通过关键字 fun 用来声明一个函数 参数的类型与函数返回类型写在它的名称后面,这和变量声明一样 函数可以定义在文件的最外层,不一定要把它放在类中 示例: ...

  9. Kotlin基础特性深入讲解

    继续学习基础语法,在上次https://www.cnblogs.com/webor2006/p/11183077.html中定义了一个两数相加的函数,如下: 其实对于这个函数还可以进一步简写,因为函数 ...

随机推荐

  1. 【Linux】linux之如何清理磁盘空间

    相关命令: 1.查询磁盘空间占用情况df -h2.进入根目录,查询大文件与目录 cd /du -sh * | sort -n 查看上GB的目录并且排序,可以用这个命令du -h --max-depth ...

  2. 【Spring Cloud】Spring Cloud之整合Spring Cloud Bus以及最佳实践

    一.整合步骤 1)加入Maven坐标 <!-- actuator监控模块 --> <dependency> <groupId>org.springframework ...

  3. flask通过nginx代理后base_url拿不到正确的url_scheme2016-04-14 12:31

    http://www.axiaoxin.com/article/210/ Nginx配置了https请求后,用户发起https请求时首先和Nginx建立连接,完成SSL握手,而后Nginx作为代理是以 ...

  4. Pat 1003 甲级

    #include <cstdlib> #include <cstring> #include <iostream> #include <cstdio> ...

  5. 拖拽插件SortableJS

    在项目中,经常会遇到一些涉及到拖拽的需求,github上面有一个开源的SortableJS的插件,支持Vue,React,Angular等多种框架,实现效果很好,基本可以满足大部分的需求,下面就第一次 ...

  6. canvas详解---绘制弧线

    Draw an arc context.arc(centerx,centery,radius,startingAngle,endingAngle,anticlockwise=false); 参数一是圆 ...

  7. 使用adb/Linux获取网关ip

    ip route list table

  8. 【大数据】设置SSH免密钥(转)

    设置SSH免密钥 关于ssh免密码的设置,要求每两台主机之间设置免密码,自己的主机与自己的主机之间也要求设置免密码. 这项操作可以在admin用户下执行,执行完毕公钥在/home/admin/.ssh ...

  9. curl多线程下载类

    <?php /** * curl多线程下载类 */class MultiHttpRequest{ public $urls = array (); private $res = array () ...

  10. CSS进阶之路

    下面主要引用http://www.cnblogs.com/wangfupeng1988/tag/css知多少/ CSS进阶笔记: 一.学习CSS的三个突破点 1.浏览器如何加载和解析CSS——CSS的 ...