美文网首页
Kotlin面向对象 (6)枚举类

Kotlin面向对象 (6)枚举类

作者: 狼性代码人 | 来源:发表于2019-05-30 17:02 被阅读0次
  • 枚举类构造函数
  • 枚举常用属性和函数

kotlin 中使用 enumclass 两个关键词声明枚举类。

enum class 枚举类名 {
    枚举常量列表
}

枚举类使用案例:

enum class WeekDays {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

fun main(args: Array<String>) {
    val day = WeekDays.SUNDAY
    println(day)    // SUNDAY
    when(day) {
        WeekDays.MONDAY -> println("星期一")
        WeekDays.TUESDAY -> println("星期二")
        WeekDays.WEDNESDAY -> println("星期三")
        WeekDays.THURSDAY -> println("星期四")
        WeekDays.FRIDAY -> println("星期五")
        else -> println("Happy Day")
    }
}

// 结果
SUNDAY
Happy Day

一、枚举类构造函数

  • 枚举类可以像其他类一样包含属性和函数,可以通过构造函数初始化属性。
enum class WeekDays(val wname: String, var index: Int) {
    MONDAY("星期一", 0), 
    TUESDAY("星期二", 1),
    WEDNESDAY("星期三", 2),
    THURSDAY("星期四", 3),
    FRIDAY("星期五", 4),
    SATURDAY("星期六", 5),
    SUNDAY("星期日", 6);

    override fun toString() = "$wname - $index"
}

fun main(args: Array<String>) {
    val day = WeekDays.SUNDAY
    println(day)    // 星期日 - 6
}

注意:在枚举类中如果有其他属性或函数等成员时,枚举常量列表必须是类体中的第一行,而且语言结束一定不能省略分号 (;) 。

二、枚举常用属性和函数

  • ordinal 属性:返回枚举常量的顺序,这个顺序根据枚举常量声明的顺序而定,顺序从零开始。
  • values() 函数,返回一个包含全部枚举常量的数组。
  • valueOf(value: String) 函数,value 是枚举常量对应的字符串,返回一个包含枚举类型示例。
fun main(args: Array<String>) {
    val allValues = WeekDays.values()
    allValues.forEach {
        println("[ordinal: ${it.ordinal}, value: $it]")
    }

    val day1 = WeekDays.FRIDAY
    val day2 = WeekDays.valueOf("FRIDAY")

    println(day1 === WeekDays.FRIDAY)   // true
    println(day1 == WeekDays.FRIDAY)    // true
    println(day1 === day2)              // true
}

2019-05-30 16:55:19.329 25984-25984/cn.ak.kot I/System.out: [ordinal: 0, value: 星期一 - 0]
2019-05-30 16:55:19.329 25984-25984/cn.ak.kot I/System.out: [ordinal: 1, value: 星期二 - 1]
2019-05-30 16:55:19.329 25984-25984/cn.ak.kot I/System.out: [ordinal: 2, value: 星期三 - 2]
2019-05-30 16:55:19.329 25984-25984/cn.ak.kot I/System.out: [ordinal: 3, value: 星期四 - 3]
2019-05-30 16:55:19.329 25984-25984/cn.ak.kot I/System.out: [ordinal: 4, value: 星期五 - 4]
2019-05-30 16:55:19.329 25984-25984/cn.ak.kot I/System.out: [ordinal: 5, value: 星期六 - 5]
2019-05-30 16:55:19.330 25984-25984/cn.ak.kot I/System.out: [ordinal: 6, value: 星期日 - 6]
2019-05-30 16:55:19.336 25984-25984/cn.ak.kot I/System.out: true
2019-05-30 16:55:19.340 25984-25984/cn.ak.kot I/System.out: true
2019-05-30 16:55:19.340 25984-25984/cn.ak.kot I/System.out: true

注意:代码中的 === 比较的是两个引用是否指向同一个对象,而 == 是比较对象内容是否相同。但是,对于枚举引用类型 ===== 是一样的,这也说明枚举类中每个枚举常量无论何时都只有一个实例,即是单例的。

相关文章

  • Kotlin面向对象 (6)枚举类

    枚举类构造函数枚举常用属性和函数 kotlin 中使用 enum 和 class 两个关键词声明枚举类。 枚举类使...

  • Kotlin面向对象之枚举类(Enum Classes)

    枚举类的最基本用法是实现类型安全的枚举 枚举常量是一个对象。枚举常量之间以逗号分隔。 初始化(Initializa...

  • swift面相对象的基础<一>

    面向对象的核心是类和对象,面向对象的三大特征:封装,继承和多肽。swift可以定义枚举,结构体和类三种面向对象的实...

  • Swift--Swift语言中的面向对象特性

    Swift语言中的面向对象类型 枚举 结构体 类 可选链 访问限定 Swift语言中的面向对象类型 面向对象概念的...

  • 7.面向对象编程

    Swift 面向对象编程 面向对象的三大特性 继承封装多态 基本单元 枚举结构体类协议扩展 面向对象概述 从整体的...

  • Kotlin——面向对象

    Kotlin面向对象 类和对象 Kotlin提供了定义类、属性、方法等最基本的功能。类可被认为是一种自定义的数据类...

  • Kotlin学习笔记之 11 枚举类

    11.Kotlin 枚举类 枚举类初始化关键字是enum,kotlin中的枚举类初始化可以有参数,比如:enum ...

  • 从零开始学Kotlin-枚举(9)

    从零开始学Kotlin基础篇系列文章 枚举的定义 一个类的对象是有限且固定的,这种实例有限且固定的类称为枚举类; ...

  • Swift 面向对象 1: 枚举

    //swift语言中将结构体与枚举放在了面向对象的思想中因为枚举、结构体、类工作原理完全相同这三种面向对象的要素都...

  • 第六篇:Kotlin之面向对象简单

    上篇:Kotlin之函数Lambda表达式 下篇:Kotlin之面向对象升级(一) Kotlin也支持面向对象的三...

网友评论

      本文标题:Kotlin面向对象 (6)枚举类

      本文链接:https://www.haomeiwen.com/subject/skjvtctx.html