web-dev-qa-db-fra.com

Comment puis-je créer une méthode "statique" pour enum dans Kotlin?

Kotlin a déjà un certain nombre de méthodes "statiques" pour la classe enum, comme values et valueOf

Par exemple, j'ai enum

public enum class CircleType {
    FIRST
    SECOND
    THIRD
}

Comment puis-je ajouter une méthode statique telle que random(): CircleType? Les fonctions d'extension ne semblent pas dans ce cas.

43
ruX

Comme avec n'importe quelle autre classe, vous pouvez définir un objet de classe dans une classe enum:

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

Vous pourrez alors appeler cette fonction en tant que CircleType.random().

EDIT: notez les virgules entre les entrées de constante enum et le point-virgule de fermeture avant l'objet compagnon. Les deux sont désormais obligatoires.

95
yole