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.