枚舉類最基本的用法是實現一個類型安全的枚舉。
枚舉常量用逗號分隔,每個枚舉常量都是一個對象。
enum class Color {
RED,BLACK,BLUE,GREEN,WHITE
}
相關屬性、方法
枚舉類具有兩個屬性兩個方法,
屬性是name和ordinal,分別獲取枚舉名稱和枚舉序號
方法一個是獲取集合可以進行遍歷等操作,另一個是其名稱獲取枚舉常數
val color: Color = Color.RED
color.name
color.ordinal
Color.valueOf("RED")
Color.values().size
結果:
枚舉自定義屬性
每一個枚舉都是枚舉類的實例,它們可以被初始化,可以自定義屬性
舉例:
enum class Age(val rgb: Int, val number: Int) {
Child(2, 20),
Youth(18, 180),
OldMan(60, 600)
}
Age.Child
Age.Child.rgb
Age.Child.number
結果:
枚舉自定義方法
枚舉還支持以聲明自己的匿名類及相應的方法、以及覆蓋基類的方法
舉例:
enum class ProtocolState {
WAITING {
override fun signal() = "WAITING的方法"
},
TALKING {
override fun signal() = "TALKING的方法"
};
abstract fun signal(): String
}
ProtocolState.TALKING.signal()
結果: