kotlin频道AndroidKotlin

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

2017-06-02  本文已影响39人  Rhett_S

初始化

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

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

上一篇下一篇

猜你喜欢

热点阅读