サーチ…


備考

Javaの場合と同様に、Kotlinのenumクラスは、定義されたenum定数をリストし、その名前で列挙定数を得ることを可能にする合成メソッドを持っています。これらのメソッドのシグネチャは次のとおりです(enumクラスの名前がEnumClassEnumClass )。

EnumClass.valueOf(value: String): EnumClass
EnumClass.values(): Array<EnumClass>

指定された名前がクラスで定義されている列挙定数のいずれとも一致しない場合、 valueOf()メソッドはIllegalArgumentExceptionスローします。

すべてのenum定数には、enumクラス宣言の名前と位置を取得するためのプロパティがあります。

val name: String
val ordinal: Int

enum定数は、Comparableインタフェースも実装しています。自然順序は、enumクラスで定義されている順序です。

初期化

他のクラスと同じようにEnumクラスはコンストラクタを持ち、初期化されます

enum class Color(val rgb: Int) {
    RED(0xFF0000),
    GREEN(0x00FF00),
    BLUE(0x0000FF)
}

enumsの関数とプロパティ

列挙型クラスはメンバ(つまり、プロパティと関数)を宣言することもできます。最後のenumオブジェクトと最初のメンバー宣言の間にセミコロン( ; )を挿入する必要があります。

メンバーがabstract場合、enumオブジェクトはそれを実装する必要があります。

enum class Color {
    RED {
        override val rgb: Int = 0xFF0000
    },
    GREEN {
        override val rgb: Int = 0x00FF00
    },
    BLUE {
        override val rgb: Int = 0x0000FF
    }

    ;

    abstract val rgb: Int

    fun colorString() = "#%06X".format(0xFFFFFF and rgb)
}

単純なenum

enum class Color {
  RED, GREEN, BLUE
}

各enum定数はオブジェクトです。 Enum定数はコンマで区切られています。

変異性

列挙型は変更可能ですが、これはシングルトンの動作を取得する別の方法です。

enum class Planet(var population: Int = 0) {
    EARTH(7 * 100000000),
    MARS();

    override fun toString() = "$name[population=$population]"
}

 println(Planet.MARS) // MARS[population=0]
 Planet.MARS.population = 3
 println(Planet.MARS) // MARS[population=3]


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow