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

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"
}
}
主站蜘蛛池模板: 玛多县| 密山市| 黄骅市| 文登市| 朔州市| 永兴县| 青冈县| 麻城市| 镇安县| 阿克| 平定县| 赣州市| 万荣县| 闸北区| 仙居县| 山东省| 海林市| 赞皇县| 循化| 新丰县| 太原市| 芜湖县| 寿光市| 大埔县| 运城市| 五寨县| 乳山市| 新余市| 九龙城区| 远安县| 永和县| 综艺| 全南县| 榕江县| 武穴市| 武冈市| 仁布县| 子洲县| 广平县| 辽阳县| 海安县|