English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
エnumクラスの最も基本的な使用法は、タイプセーフなエnumを実現することです。
エnum定数はコンマで区切られ、各エnum定数はオブジェクトです。
enum class Color{ RED,BLACK,BLUE,GREEN,WHITE }
各エnumはエnumクラスの例です。それらは初期化できます:
enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }
デフォルトの名前はエnum文字列名で、値は0から始まります。値を指定する必要がある場合は、コンストラクタを使用できます:
enum class Shape(value:Int){ ovel(100), rectangle(200) }
エnumは、独自の匿名クラスおよび相应のメソッド、および基底クラスのメソッドをオーバーライドすることをサポートします。例えば:
enum class ProtocolState { WAITING { override fun signal() = TALKING }, TALKING { override fun signal() = WAITING }; abstract fun signal(): ProtocolState }
エnumクラスがメンバーを定義している場合、分号でメンバー定義内のエnum定数の定義を区切ります
Kotlinのエnumクラスには合成メソッドがあり、定義されたエnum定数を巡回し、その名前でエnum定数を取得することができます。
EnumClass.valueOf(value: String): EnumClass // 指定されたnameをエnum値に変換します。一致しない場合、IllegalArgumentExceptionが投げられます EnumClass.values(): Array<EnumClass> // 配列の形式で、エnum値を返します
エnumに関する情報を取得します:
val name: String //エnum名を取得します val ordinal: Int //すべてのエnum配列で定義されたエnum値の順序を取得します
enum class Color{ RED,BLACK,BLUE,GREEN,WHITE } fun main(args: Array<String>) { var color:Color=Color.BLUE println(Color.values()) println(Color.valueOf("RED")) println(color.name) println(color.ordinal) }
Kotlin 1.1 起,使用できます enumValues<T>()
と enumValueOf<T>()
関数はジェネリクスを使用してエnumクラスの定数にアクセスします
:
enum class RGB { RED, GREEN, BLUE } inline fun <reified T : Enum<T>> printAllValues() { print(enumValues<T>().joinToString { it.name }) } fun main(args: Array<String>) { printAllValues<RGB>() // 出力 RED, GREEN, BLUE }