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

enums, kotlin, static

Solution

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.

Problem

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.

Original source