Jak mohu vytvořit „statické“ metody pro výčtu v Kotiln?

hlasů
19

Kotlin již řadu „statické“ metody pro výčet třídy, stejně jako valuesivalueOf

Například mám výčet

public enum class CircleType {
    FIRST
    SECOND
    THIRD
}

Jak mohu přidat statické metody, jako je random(): CircleType? Rozšiřující funkce vypadá, že není pro tento případ.

Položena 26/02/2015 v 21:40
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
45

Stejně jako u jakékoli jiné třídy, můžete definovat objekt třídy ve třídě výčtu:

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

Pak budete moci volat tuto funkci jako CircleType.random().

EDIT: Všimněte si čárky mezi konstantní položky výčtu a závěrečnou středník před objektem společník. Oba jsou nyní povinné.

Odpovězeno 26/02/2015 v 22:01
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more