Kotlin學(xué)習(xí)筆記之 11 枚舉類(lèi)

首發(fā)于公眾號(hào): DSGtalk1989

11.Kotlin 枚舉類(lèi)

  • 枚舉類(lèi)初始化

    關(guān)鍵字是enum,kotlin中的枚舉類(lèi)初始化可以有參數(shù),比如:

    enum class Shape(value:Int){
         ovel(100),
         rectangle(200)
     }
    

    我們習(xí)慣性的會(huì)將枚舉對(duì)象大寫(xiě),但實(shí)際上不一定需要。

    并且這里我們會(huì)將破天荒的第一次在kotlin中去使用分號(hào);,它主要用來(lái)區(qū)分枚舉對(duì)象和成員函數(shù)的

    enum class ProtocolState {
         WAITING {
             override fun signal() = TALKING
         },
     
         TALKING {
             override fun signal() = WAITING
         };
     
         abstract fun signal(): ProtocolState
     }
    

    枚舉對(duì)象內(nèi)部也可以直接加入方法。

  • 靜態(tài)方法values和valueOf,和屬性name,ordinal

    values方法返回的是枚舉類(lèi)數(shù)組,會(huì)遍歷枚舉常量。valuesOf會(huì)直接返回相應(yīng)字符串對(duì)應(yīng)的枚舉對(duì)象。

    name顧名思義就是枚舉類(lèi)的名字,ordinal是對(duì)象所在的index0開(kāi)始

    println(Color.valueOf("RED")
    for(color in Color.values()){
         println(color.name)
         println(color.ordinal)
     }
    
  • enumValues<T>() 和 enumValueOf<T>()

    直接使用泛型的方式訪問(wèn)枚舉類(lèi)中的常量

    inline fun <reified T : Enum<T>> printAllValues() {
         print(enumValues<T>().joinToString { it.name })
     }   
     
     fun main(args: Array<String>) {
         printAllValues<RGB>() // 輸出 RED, GREEN, BLUE
     }
    

    里面涉及到的inlinereified我們之后說(shuō)


Kotlin學(xué)習(xí)筆記之 1 基礎(chǔ)語(yǔ)法

Kotlin學(xué)習(xí)筆記之 2 基本數(shù)據(jù)類(lèi)型

Kotlin學(xué)習(xí)筆記之 3 條件控制

Kotlin學(xué)習(xí)筆記之 4 循環(huán)控制

Kotlin學(xué)習(xí)筆記之 5 類(lèi)和對(duì)象

Kotlin學(xué)習(xí)筆記之 6 繼承

Kotlin學(xué)習(xí)筆記之 7 接口

Kotlin學(xué)習(xí)筆記之 8 擴(kuò)展

Kotlin學(xué)習(xí)筆記之 9 數(shù)據(jù)類(lèi)與密封類(lèi)

Kotlin學(xué)習(xí)筆記之 10 泛型

Kotlin學(xué)習(xí)筆記之 11 枚舉類(lèi)

Kotlin學(xué)習(xí)筆記之 12 對(duì)象表達(dá)式和對(duì)象聲明

Kotlin學(xué)習(xí)筆記之 13 基礎(chǔ)操作符run、with、let、also、apply

Kotlin學(xué)習(xí)筆記之 14 包與導(dǎo)入

Kotlin學(xué)習(xí)筆記之 15 伴生對(duì)象

Kotlin學(xué)習(xí)筆記之 16 委托

Kotlin學(xué)習(xí)筆記之 17 可觀察屬性

Kotlin學(xué)習(xí)筆記之 18 函數(shù)

Kotlin學(xué)習(xí)筆記之 19 高階函數(shù)與 lambda 表達(dá)式

Kotlin學(xué)習(xí)筆記之 20 內(nèi)聯(lián)函數(shù)

Kotlin學(xué)習(xí)筆記之 21 解構(gòu)聲明

Kotlin學(xué)習(xí)筆記之 22 集合

Kotlin學(xué)習(xí)筆記之 23 相等判斷

Kotlin學(xué)習(xí)筆記之 24 操作符重載

Kotlin學(xué)習(xí)筆記之 25 異常捕捉

Kotlin學(xué)習(xí)筆記之 26 反射

Kotlin學(xué)習(xí)筆記之 27 類(lèi)型別名

Kotlin學(xué)習(xí)筆記之 28 協(xié)程基礎(chǔ)

Kotlin學(xué)習(xí)筆記之 29 上下文與調(diào)度器

Kotlin學(xué)習(xí)筆記之 30 協(xié)程取消與超時(shí)

Kotlin學(xué)習(xí)筆記之 31 協(xié)程掛起函數(shù)的組合

Kotlin學(xué)習(xí)筆記之 32 協(xié)程異常處理

Kotlin學(xué)習(xí)筆記之 33 協(xié)程 & Retrofit

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

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

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