官术网_书友最值得收藏!

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"
}
}
主站蜘蛛池模板: 密山市| 衢州市| 大城县| 洛川县| 渭南市| 松滋市| 沈阳市| 乐山市| 大石桥市| 津南区| 剑川县| 江达县| 衢州市| 靖边县| 阳谷县| 邢台县| 祥云县| 维西| 太原市| 凭祥市| 平遥县| 淮滨县| 昌黎县| 双牌县| 永胜县| 时尚| 乐平市| 江津市| 深水埗区| 青阳县| 湖北省| 自治县| 黄平县| 蕲春县| 武平县| 诸暨市| 同江市| 盱眙县| 瓦房店市| 诏安县| 蓬莱市|