Kotlin-17.列舉類(enum class)
官方文件: http://kotlinlang.org/docs/reference/enum-classes.html
1.列舉類(enum class)
列舉類(enum class)基本用法,特性,和java差不多:
enum class Direction {
//每個列舉常量(Enum Constants)都是一個物件,用逗號分隔
NORTH, SOUTH, WEST, EAST
}
2.初始化(Initialization)
因為每個列舉常量都是一個物件,所以都有初始化:
enum class Color(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF)
}
3.匿名類(Anonymous Classes)
每個列舉常量都能宣告匿名類:
enum class ProtocolState {
WAITING {
override fun signal() = TALKING
},
TALKING {
override fun signal() = WAITING
}; //注意:像Java一樣,Kotlin列舉常量也需要分號;分隔!
abstract fun signal(): ProtocolState
}
4.使用列舉常量(Enum Constants)
像Java一樣,Kotlin列舉類也有合成方法,允許訪問列舉常量:
enum class RGB {
RED, GREEN, BLUE
}
//通過名字獲取列舉常量
RGB.valueOf(value: String): EnumClass
//獲取列舉常量列表
RGB.values(): Array<EnumClass>
自Kotlin 1.1起,可用enumValues<T>()和enumValueOf<T>() 以泛型方式訪問列舉常量:
enum class RGB {
RED, GREEN, BLUE
}
inline fun <reified T : Enum<T>> printAllValues() {
print(enumValues<T>().joinToString { it.name })
}
printAllValues<RGB>() //輸出 RED, GREEN, BLUE
像Java一樣,每個列舉常量都有兩個屬性-宣告名字和宣告位置:
val name: String
val ordinal: Int
列舉常量也實現了Comparable介面, 其中自然順序(natural order)是在列舉類中的定義順序!
簡書:http://www.jianshu.com/p/6af7998af8d1
CSDN部落格: http://blog.csdn.net/qq_32115439/article/details/73692421
GitHub部落格:http://lioil.win/2017/06/24/Kotlin-enum-classes.html
Coding部落格:http://c.lioil.win/2017/06/24/Kotlin-enum-classes.html
相關文章
- Java —— 列舉類(enum 類)Java
- 【python】Enum 列舉類Python
- Java enum列舉類詳解 列舉的常見用法Java
- Java 列舉(enum)Java
- TypeScript 列舉enumTypeScript
- ENUM列舉型別型別
- 再談java列舉enumJava
- Java - Enum 列舉型別Java型別
- Java 列舉 enum 詳解Java
- Rust的列舉型別EnumRust型別
- 聊聊TypeScript中列舉物件(Enum)TypeScript物件
- 從JDK角度認識列舉enumJDK
- 聊一聊Java的列舉enumJava
- 使用列舉ENUM替換Switch或If-Else
- Java列舉enum可以有抽象方法! -RecepİnançJava抽象NaN
- Java列舉:小小enum,優雅而乾淨Java
- 列舉類
- Java列舉型別enum的詳解及使用Java型別
- 列舉工具類
- java列舉類Java
- PLC結構化文字(ST)——隱式列舉(implicit enum)
- Java 列舉(enum) 詳解7種常見的用法Java
- Enum列舉型別實戰總結,保證有用!型別
- Java(4)列舉類Java
- Python元類與列舉類Python
- 優雅使用前端列舉Enum,符合國標的那種!前端
- 資料結構複習-01enum列舉型別資料結構型別
- java_06列舉類Java
- Day69.註解&列舉類的複習 -Java註解&列舉類Java
- springboot mybatis列舉配置(每次只需新增一個列舉類即可)Spring BootMyBatis
- Python 列舉類原始碼解析Python原始碼
- Rust 列舉類是什麼Rust
- Partial類、列舉、結構體結構體
- 【C/C++】C和C++11之enum列舉的使用細節C++
- Java列舉類、註解和反射Java反射
- 為什麼使用列舉作為配置項(enum as configuration)是反開發模式的模式
- Java列舉類學習到進階Java
- Java列舉類與註解詳解——一篇文章讀懂列舉類與註解詳Java
- 列舉一下常見的final類?