web-dev-qa-db-ja.com

Kotlinで列挙型の「静的」メソッドを作成するにはどうすればよいですか?

Kotlinには、valuesvalueOfなど、enumクラス用の「静的」メソッドが既にいくつかあります

たとえば、私は列挙型を持っています

_public enum class CircleType {
    FIRST
    SECOND
    THIRD
}
_

random(): CircleTypeなどの静的メソッドを追加するにはどうすればよいですか?この場合、拡張機能はないようです。

43
ruX

他のクラスと同様に、enumクラスでクラスオブジェクトを定義できます。

_enum class CircleType {
  FIRST,
  SECOND,
  THIRD;
  companion object {
     fun random(): CircleType = FIRST // http://dilbert.com/strip/2001-10-25
  }
}
_

次に、この関数をCircleType.random()として呼び出すことができます。

編集:列挙定数エントリ間のコンマと、コンパニオンオブジェクトの前のセミコロンに注意してください。両方が必須になりました。

95
yole