- Functional Kotlin
- Mario Arias Rivu Chakraborty
- 257字
- 2021-06-24 19:15:25
Enum
Enum in Kotlin is a way to define a set of constant values. Enums are very useful, but not limited, as configuration values:
enum class Flour {
WHEAT, CORN, CASSAVA
}
Each element is an object that extends the Flour class.
Like any object, they can extend interfaces:
interface Exotic {
fun isExotic(): Boolean
}
enum class Flour : Exotic {
WHEAT {
override fun isExotic(): Boolean {
return false
}
},
CORN {
override fun isExotic(): Boolean {
return false
}
},
CASSAVA {
override fun isExotic(): Boolean {
return true
}
}
}
Enum can also have abstract methods:
enum class Flour: Exotic {
WHEAT {
override fun isGlutenFree(): Boolean {
return false
}
override fun isExotic(): Boolean {
return false
}
},
CORN {
override fun isGlutenFree(): Boolean {
return true
}
override fun isExotic(): Boolean {
return false
}
},
CASSAVA {
override fun isGlutenFree(): Boolean {
return true
}
override fun isExotic(): Boolean {
return true
}
};
abstract fun isGlutenFree(): Boolean
}
Any method definition must be declared after the (;) separating the last element.
When enums are used with when expressions, Kotlin's compiler checks that all cases are covered (individually or with an else):
fun flourDescription(flour: Flour): String {
return when(flour) { // error
Flour.CASSAVA -> "A very exotic flavour"
}
}
In this case, we're only checking for CASSAVA and not the other elements; therefore, it fails:
fun flourDescription(flour: Flour): String {
return when(flour) {
Flour.CASSAVA -> "A very exotic flavour"
else -> "Boring"
}
}
推薦閱讀
- 手機安全和可信應用開發指南:TrustZone與OP-TEE技術詳解
- Java 開發從入門到精通(第2版)
- Flink SQL與DataStream入門、進階與實戰
- Django開發從入門到實踐
- HTML5 Mobile Development Cookbook
- 匯編語言程序設計(第2版)
- Java項目實戰精編
- 搞定J2EE:Struts+Spring+Hibernate整合詳解與典型案例
- MINECRAFT編程:使用Python語言玩轉我的世界
- Python 3 數據分析與機器學習實戰
- Python程序設計開發寶典
- 監控的藝術:云原生時代的監控框架
- 計算機應用基礎(第二版)
- Python全棧開發:基礎入門
- Getting Started with Electronic Projects