How can I create "static" method for enum in Kotiln?

ruX picture ruX · Feb 26, 2015 · Viewed 28.8k times · Source

Kotlin already have number of "static" methods for enum class, like values and valueOf

For example I have enum

public enum class CircleType {
    FIRST
    SECOND
    THIRD
}

How can I add static method such as random(): CircleType? Extension functions seems not for this case.

Answer

yole picture yole · Feb 26, 2015

Just like with any other class, you can define a class object in an enum class:

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

Then you'll be able to call this function as CircleType.random().

EDIT: Note the commas between the enum constant entries, and the closing semicolon before the companion object. Both are now mandatory.