Kotlin(1.1)學習筆記(7)——枚舉類和密封類

初始化

因為每一個枚舉都是枚舉類的實例,所以他們可以是初始化過的。

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
}

抽象類中增加了抽象方法后,每個常量都必須實現(xiàn)這個抽象方法

使用枚舉常量

可以使用

 val name: EnumClass = EnumClass.valueOf("WAITING")```獲取各個枚舉常量,從1.1之后又增加了```enumValues<T>()``` 和 ```enumValueOf<T>()```兩個函數(shù),每個枚舉常量都有兩個屬性:```val name: Stringval ordinal: Int```,并實現(xiàn)了Comparable接口,順序就是它們在枚舉類中的順序

枚舉常量還實現(xiàn)了 [Comparable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-comparable/index.html) 接口, 其中自然順序是它們在枚舉類中定義的順序。
官方的例子中使用了內(nèi)聯(lián)函數(shù),我還不是很懂,這里就不在過多解釋

enum class RGB { RED, GREEN, BLUE }

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容