首發(fā)于公眾號(hào): DSGtalk1989
11.Kotlin 枚舉類
-
枚舉類初始化
關(guān)鍵字是
enum
今缚,kotlin中的枚舉類初始化可以有參數(shù),比如:enum class Shape(value:Int){ ovel(100), rectangle(200) }
我們習(xí)慣性的會(huì)將枚舉對(duì)象大寫拖刃,但實(shí)際上不一定需要薯演。
并且這里我們會(huì)將破天荒的第一次在kotlin中去使用分號(hào)
;
贸诚,它主要用來區(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
方法返回的是枚舉類數(shù)組,會(huì)遍歷枚舉常量蒸健。valuesOf
會(huì)直接返回相應(yīng)字符串對(duì)應(yīng)的枚舉對(duì)象座享。name
顧名思義就是枚舉類的名字婉商,ordinal
是對(duì)象所在的index
從0
開始println(Color.valueOf("RED") for(color in Color.values()){ println(color.name) println(color.ordinal) }
-
enumValues<T>() 和 enumValueOf<T>()
直接使用泛型的方式訪問枚舉類中的常量
inline fun <reified T : Enum<T>> printAllValues() { print(enumValues<T>().joinToString { it.name }) } fun main(args: Array<String>) { printAllValues<RGB>() // 輸出 RED, GREEN, BLUE }
里面涉及到的
inline
和reified
我們之后說
Kotlin學(xué)習(xí)筆記之 1 基礎(chǔ)語法
Kotlin學(xué)習(xí)筆記之 2 基本數(shù)據(jù)類型
Kotlin學(xué)習(xí)筆記之 4 循環(huán)控制
Kotlin學(xué)習(xí)筆記之 5 類和對(duì)象
Kotlin學(xué)習(xí)筆記之 8 擴(kuò)展
Kotlin學(xué)習(xí)筆記之 9 數(shù)據(jù)類與密封類
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í)筆記之 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í)筆記之 28 協(xié)程基礎(chǔ)
Kotlin學(xué)習(xí)筆記之 29 上下文與調(diào)度器
Kotlin學(xué)習(xí)筆記之 30 協(xié)程取消與超時(shí)
Kotlin學(xué)習(xí)筆記之 31 協(xié)程掛起函數(shù)的組合