Bekerja dengan Enums di Kotlin

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan mempelajari mendalam mengenai Kotlin.

Dengan evolusi bahasa pengaturcaraan, penggunaan dan penggunaan enum juga maju.

Jumlah pemalar hari ini bukan sekadar koleksi pemalar - mereka boleh mempunyai sifat, melaksanakan antara muka, dan banyak lagi.

Untuk pemula Kotlin, baca artikel ini mengenai asas-asas Kotlin - Pengantar Bahasa Kotlin.

2. Bilangan Kotlin Asas

Mari lihat asas enum di Kotlin.

2.1. Menentukan Jumlah

Mari tentukan enum sebagai mempunyai tiga pemalar yang menerangkan jenis kad kredit:

enum class CardType { SILVER, GOLD, PLATINUM }

2.2. Memulakan Pemalar Enum

Jumlah di Kotlin, seperti di Jawa, boleh mempunyai konstruktor. Oleh kerana pemalar enum adalah contoh kelas Enum , pemalar boleh diinisialisasi dengan menyampaikan nilai tertentu kepada pembina.

Mari tentukan nilai warna untuk pelbagai jenis kad:

enum class CardType(val color: String) { SILVER("gray"), GOLD("yellow"), PLATINUM("black") }

Kami dapat mengakses nilai warna jenis kad tertentu dengan:

val color = CardType.SILVER.color

3. Pemalar Enum sebagai Kelas Tanpa Nama

Kita boleh menentukan tingkah laku pemalar enum tertentu dengan menjadikannya sebagai kelas tanpa nama. Pemalar kemudian perlu mengatasi fungsi abstrak yang ditentukan dalam takrif Enum .

Sebagai contoh, untuk setiap jenis kad, kami mungkin mempunyai pengiraan wang tunai yang berbeza.

Mari lihat bagaimana kita dapat melaksanakannya:

enum class CardType { SILVER { override fun calculateCashbackPercent() = 0.25f }, GOLD { override fun calculateCashbackPercent() = 0.5f }, PLATINUM { override fun calculateCashbackPercent() = 0.75f }; abstract fun calculateCashbackPercent(): Float }

Kita boleh menggunakan kaedah kelas tetap tanpa nama yang diganti dengan:

val cashbackPercent = CardType.SILVER.calculateCashbackPercent()

4. Enumum Melaksanakan Antaramuka

Katakan ada antara muka ICardLimit yang menentukan had kad dari pelbagai jenis kad:

interface ICardLimit { fun getCreditLimit(): Int }

Sekarang, mari kita lihat bagaimana enum kita dapat melaksanakan antara muka ini:

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

Untuk mengakses had kredit jenis kad, kami dapat menggunakan pendekatan yang sama seperti pada contoh sebelumnya:

val creditLimit = CardType.PLATINUM.getCreditLimit()

5. Konstruk Enum Biasa

5.1. Mendapatkan Pemalar Enum mengikut Nama

Untuk mendapatkan pemalar enum dengan nama Stringnya , kami menggunakan fungsi statik valueOf () :

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

5.2. Pemanasan Melalui Pemalar Enum

Untuk mengulangi semua pemalar enum, kita menggunakan nilai () fungsi statik:

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

5.3. Kaedah Statik

Untuk menambahkan fungsi "statik" ke enum, kita dapat menggunakan objek pendamping :

companion object { fun getCardTypeByName(name: String) = valueOf(name.toUpperCase()) }

Kita sekarang boleh menggunakan fungsi ini dengan:

val cardType = CardType.getCardTypeByName("SILVER")

Perhatikan bahawa Kotlin tidak mempunyai konsep kaedah statik . Apa yang kami tunjukkan di sini adalah cara untuk mendapatkan fungsi yang sama seperti di Java, tetapi menggunakan ciri-ciri Kotlin.

6. Kesimpulannya

Artikel ini membuat pengenalan tentang enum dalam bahasa Kotlin dan ini adalah ciri utama.

Kami telah memperkenalkan beberapa konsep mudah seperti menentukan enum dan memulakan pemalar. Kami juga telah menunjukkan beberapa ciri canggih seperti mendefinisikan pemalar enum sebagai kelas tanpa nama, dan antara muka yang menerapkan enum.

Pelaksanaan semua contoh dan potongan kod ini boleh didapati di projek GitHub. Ini adalah projek Maven, jadi mudah untuk diimport dan dijalankan sebagaimana adanya.