首發(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ì)象所在的index從0開(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 }里面涉及到的
inline和reified我們之后說(shuō)
Kotlin學(xué)習(xí)筆記之 1 基礎(chǔ)語(yǔ)法
Kotlin學(xué)習(xí)筆記之 2 基本數(shù)據(jù)類(lèi)型
Kotlin學(xué)習(xí)筆記之 4 循環(huán)控制
Kotlin學(xué)習(xí)筆記之 5 類(lèi)和對(duì)象
Kotlin學(xué)習(xí)筆記之 8 擴(kuò)展
Kotlin學(xué)習(xí)筆記之 9 數(shù)據(jù)類(lèi)與密封類(lèi)
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í)筆記之 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í)筆記之 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ù)的組合