kotlin學習筆記——枚舉、封閉類

Kotlin學習筆記系列:http://blog.csdn.net/column/details/16696.html


1、枚舉

kotlin中提供類枚舉的實現,與java相同。枚舉可以帶參數,如
enum Icon(val res: Int){
     MENU(R.drawable.menu),
     BACK(R.drawable.back)
}

val backIcon = Icon.BACK.res
枚舉可以通過字符串匹配名字來獲取,也可以得到所以枚舉的array,如
val back: Icon = Icon.valueOf("BACK")
val icons: Array<Icon> = Icon.values()
枚舉也提供一些函數來獲取名字和聲明的位置
val name: String = Icon.BACK.name()
val position: Int = Icon.BACK.ordinal()
枚舉根據順序實現了Comparable接口,所以可以很方便的進行排序

2、封閉類sealed

用sealed修飾的類叫封閉類,它類似枚舉enum,如:
sealed class Icon{
     class Menu(val id: Int) : Icon()
     class Back(val url: String) : Icon()
     object None : Icon()
}
可以看到它有固定個數的子類,而且子類與父類一起被定義出來。與enum不同的是,枚舉的實例是唯一的,而封閉類可以有多個實例,它可以有不同的狀態。
封閉類可以與when配合使用,如:
val result: String = when(icon){
     is Menu -> "xxx" + icon.id
     is Back -> icon.url
     is None -> ""
}


3、異常Excaption

kotlin中的異常與java中相似,但是kotlin中的異常都是未經檢查,表示不會強迫在任何地方使用try/catch。
(kotlin中有throw關鍵字,但是沒有throws關鍵字)
throw與try/catch的使用與java中一樣,但是在kotlin中它們都是表達式都可以返回值。具體見kotlin學習筆記——過程控制和Range表達式


總結:

到本文章爲止,kotlin學習筆記系列就結束了,這個系列主要是整理了學習kotlin過程中的一些知識點。但是kotlin學習筆記系列的專欄還會繼續,會不定時的分享一些在使用kotlin開發過程中遇到的問題和新的知識,謝謝!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章