美文网首页kotlin频道AndroidKotlin
Kotlin(1.1)学习笔记(7)——枚举类和密封类

Kotlin(1.1)学习笔记(7)——枚举类和密封类

作者: Rhett_S | 来源:发表于2017-06-02 17:20 被阅读39次

    初始化

    因为每一个枚举都是枚举类的实例,所以他们可以是初始化过的。

    enum class Color(val rgb: Int) {
            RED(0xFF0000),
            GREEN(0x00FF00),
            BLUE(0x0000FF)
    }
    

    匿名类

    枚举常量也可以声明自己的匿名类

    enum class EnumClass{
        WAITING{
            override fun signal(): Unit {
            }
        },
        TALKING{
            override fun signal(): Unit {
            }
        };
    
        abstract fun signal(): Unit
    }
    

    抽象类中增加了抽象方法后,每个常量都必须实现这个抽象方法

    使用枚举常量

    可以使用

     val name: EnumClass = EnumClass.valueOf("WAITING")```获取各个枚举常量,从1.1之后又增加了```enumValues<T>()``` 和 ```enumValueOf<T>()```两个函数,每个枚举常量都有两个属性:```val name: Stringval ordinal: Int```,并实现了Comparable接口,顺序就是它们在枚举类中的顺序
    
    枚举常量还实现了 [Comparable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-comparable/index.html) 接口, 其中自然顺序是它们在枚举类中定义的顺序。
    官方的例子中使用了内联函数,我还不是很懂,这里就不在过多解释
    

    enum class RGB { RED, GREEN, BLUE }

    inline fun <reified T : Enum<T>> printAllValues() {
    print(enumValues<T>().joinToString { it.name })
    }

    printAllValues<RGB>() // 输出 RED, GREEN, BLUE

    相关文章

      网友评论

        本文标题:Kotlin(1.1)学习笔记(7)——枚举类和密封类

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