Práca s Enums v Kotline

1. Prehľad

V tomto tutoriáli sa ponoríme do výčtu Kotlin.

S vývojom programovacích jazykov pokročilo aj používanie a aplikácia enums.

Konstanty Enum dnes nie sú iba obyčajnými zbierkami konštánt - môžu mať vlastnosti, implementovať rozhrania a oveľa viac.

Pre začiatočníkov Kotlin si prečítajte tento článok o základoch Kotlin - Úvod do jazyka Kotlin.

2. Základné kotlinské výčty

Pozrime sa na základy enumov v Kotline.

2.1. Definovanie Enums

Definujeme enum s tromi konštantami popisujúcimi typy kreditných kariet:

trieda výčtu CardType {SILVER, GOLD, PLATINUM}

2.2. Inicializácia Enum konštánt

Enumy v Kotline, rovnako ako v Jave, môžu mať konštruktor. Pretože konštanty enum sú inštanciami Enum triedy, konštanty je možné inicializovať odovzdaním konkrétnych hodnôt konštruktoru.

Zadajme hodnoty farieb pre rôzne typy kariet:

trieda výčtu CardType (farba valca: reťazec) {SILVER ("šedá"), GOLD ("žltá"), PLATINUM ("čierna")}

K hodnote farby konkrétneho typu karty môžeme získať pomocou:

val color = CardType.SILVER.color

3. Enum konštanty ako anonymné triedy

Konkrétne konštantné správanie výčtu môžeme definovať tak, že ich vytvoríme ako anonymné triedy. Konštanty potom musia prepísať abstraktné funkcie definované v rámci Enum definícia.

Napríklad pre každý typ karty môžeme mať iný výpočet vrátenia peňazí.

Pozrime sa, ako to môžeme implementovať:

trieda výčtu CardType {SILVER {prepísať zábavu vypočítaťCashbackPercent () = 0,25f}, GOLD {prepísať zábavu vypočítaťCashbackPercent () = 0,5f}, PLATINUM {prepísať zábavu vypočítaťCashbackPercent () = 0,75f}; abstraktná zábava vypočítaťCashbackPercent (): plavák}

Môžeme vyvolať prepísané metódy tried anonymných konštánt pomocou:

val cashbackPercent = CardType.SILVER.calculateCashbackPercent ()

4. Výčet implementačných rozhraní

Povedzme, že existuje ICardLimit rozhranie, ktoré definuje limity kariet rôznych typov kariet:

rozhranie ICardLimit {fun getCreditLimit (): Int}

Teraz sa pozrime, ako môže náš enum implementovať toto rozhranie:

enum class CardType: ICardLimit {SILVER {override fun getCreditLimit () = 100000}, GOLD {override fun getCreditLimit () = 200000}, PLATINUM {override fun getCreditLimit () = 300000}}

Na prístup k úverovému limitu typu karty môžeme použiť rovnaký prístup ako v predchádzajúcom príklade:

val creditLimit = CardType.PLATINUM.getCreditLimit ()

5. Bežné výpisy Enum

5.1. Získanie konštánt Enum podľa názvu

Ak chcete získať konštantu výčtu podľa nej String meno, používame hodnota() statická funkcia:

val cardType = CardType.valueOf (name.toUpperCase ())

5.2. Iterácia konštantami Enum

Na iteráciu všetkými konštantami enum používame hodnoty () statická funkcia:

pre (cardType in CardType.values ​​()) {println (cardType.color)}

5.3. Statické metódy

Na pridanie „statickej“ funkcie do enumu môžeme použiť a sprievodný objekt:

sprievodný objekt {fun getCardTypeByName (name: String) = valueOf (name.toUpperCase ())}

Túto funkciu teraz môžeme vyvolať pomocou:

val cardType = CardType.getCardTypeByName ("STRIEBORNÉ")

Všimnite si, že Kotlin nemá koncept statický metódy. To, čo sme tu ukázali, je spôsob, ako získať rovnakú funkcionalitu ako v prostredí Java, ale s využitím funkcií Kotlin.

6. Záver

Tento článok predstavuje úvod do enums v jazyku Kotlin a jeho kľúčové vlastnosti.

Zaviedli sme niekoľko jednoduchých konceptov, ako je definovanie enumov a inicializácia konštánt. Ukázali sme tiež niektoré pokročilé funkcie, ako je definovanie konštánt enum ako anonymných tried a enums implementujúcich rozhraní.

Implementáciu všetkých týchto príkladov a útržkov kódu nájdete v projekte GitHub. Toto je projekt Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.


$config[zx-auto] not found$config[zx-overlay] not found