Együttműködés az Enums-szel Kotlinban

1. Áttekintés

Ebben az oktatóanyagban elmélyülünk a Kotlin-enumokban.

A programozási nyelvek fejlődésével az enumok használata és alkalmazása is előrehaladt.

Az Enum konstansok ma nem pusztán konstansok gyűjteményei - tulajdonságaik lehetnek, interfészeket megvalósíthatnak és még sok minden mást.

A Kotlin kezdők számára nézze meg ezt a cikket a Kotlin alapjairól - Bevezetés a Kotlin nyelvbe.

2. Basic Kotlin Enums

Nézzük meg a Kotlin-i enums alapjait.

2.1. Enums meghatározása

Definiáljunk egy enumot úgy, hogy három konstans jellemzi a hitelkártya típusait:

enum osztály CardType {EZÜST, ARANY, PLATINUM}

2.2. Az Enum konstansok inicializálása

A kotlini Enums-nek, akárcsak a Java-nak, lehet konstruktora. Mivel az enum állandók az an példái Enum osztályban az állandókat inicializálhatjuk, ha meghatározott értékeket adunk át a konstruktornak.

Adjuk meg a színértékeket a különböző kártyatípusokhoz:

enum osztály CardType (val szín: String) {SILVER ("szürke"), ARANY ("sárga"), PLATINUM ("fekete")}

Egy adott kártyatípus színértékét a következők segítségével érhetjük el:

val szín = CardType.SILVER.color

3. Enst Constants névtelen osztályokként

Meghatározhatjuk az egyedi enum állandó viselkedését anonim osztályokként. Az állandóknak ekkor felül kell írniuk a Enum meghatározás.

Például az egyes kártyatípusok esetében eltérő lehet a cash-back számítás.

Lássuk, hogyan tudjuk megvalósítani:

enum osztály CardType {EZÜST {felülbírálja a szórakoztató számolástCashbackPercent () = 0,25f}, ARANY {felülbírálja a szórakoztató számolástCashbackPercent () = 0,5f}, PLATINUM {felülbírálja a szórakoztató számolástCashbackPercent () = 0,75f}; absztrakt szórakozás calcCashbackPercent (): Float}

Az anonim konstans osztályok felülbírált módszereire hivatkozhatunk:

val cashbackPercent = CardType.SILVER.calculateCashbackPercent ()

4. Az interfészek megvalósításáról számol be

Mondjuk van egy ICardLimit felület, amely meghatározza a különböző kártyatípusok kártyahatárát:

interfész ICardLimit {fun getCreditLimit (): Int}

Most nézzük meg, hogy az enum hogyan tudja megvalósítani ezt a felületet:

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

A kártyatípus hitelkeretének eléréséhez ugyanazt a megközelítést alkalmazhatjuk, mint az előző példában:

val creditLimit = CardType.PLATINUM.getCreditLimit ()

5. Common Enum konstrukciók

5.1. Az Enum konstansok megadása név szerint

Ahhoz, hogy enum konstansot kapjon Húr nevet használjuk értéke() statikus funkció:

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

5.2. Iterálás az Enum konstansokon keresztül

Az összes enumállandó áthaladásához a értékek () statikus funkció:

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

5.3. Statikus módszerek

A „statikus” függvény hozzáadásához az enumhoz használhatjuk a társ tárgy:

társobjektum {fun getCardTypeByName (név: String) = valueOf (név.toUpperCase ())}

Most ezt a függvényt hívhatjuk meg:

val cardType = CardType.getCardTypeByName ("EZÜST")

Ne feledje, hogy Kotlinnak nincs fogalma statikus mód. Amit itt bemutattunk, az elérheti a Java-val megegyező funkcionalitást, de a Kotlin funkcióit használva.

6. Következtetés

Ez a cikk bemutatja a Kotlin nyelvű összefoglalókat és a legfontosabb jellemzőket.

Bevezettünk néhány egyszerű fogalmat, mint például az enumok meghatározása és az állandók inicializálása. Bemutattunk néhány olyan speciális funkciót is, mint például az enum konstansok névtelen osztályokként történő meghatározása, valamint az interfészek megvalósítását tartalmazó listák.

Mindezen példák és kódrészletek megvalósítása megtalálható a GitHub projektben. Ez egy Maven projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.