Middle
Care sunt caracteristicile lucrului cu clasele Enum în Kotlin?
sobes.tech AI
Răspuns de la AI
Clasa enum este un tip special de clasă utilizat pentru a reprezenta un set de constante.
Caracteristici:
- Definirea constantelor: Fiecare constantă a enumerării este o instanță a clasei de enumerare.
enum class Color { RED, GREEN, BLUE } - Proprietăți și metode: Clasele enum pot avea proprietăți și metode. Fiecare constantă le poate implementa diferit.
enum class Status(val description: String) { SUCCESS("Operație reușită"), ERROR("A apărut o eroare"), PENDING("Așteaptă") } enum class Direction { NORTH, SOUTH, EAST, WEST; fun getOpposite(): Direction { return when (this) { NORTH -> SOUTH SOUTH -> NORTH EAST -> WEST WEST -> EAST } } } - Clase anonime: Fiecare constantă de enumerare poate fi declarată cu o clasă anonimă care oferă propriile implementări ale metodelor sau proprietăților.
enum class State { IDLE { override fun signal() = READY }, READY { override fun signal() = IDLE }; // Punct și virgulă obligatoriu înainte de a declara membrii clasei abstract fun signal(): State } - Implementarea interfețelor: Clasa enum poate implementa interfețe.
interface Printable { fun printName() } enum class Shape : Printable { CIRCLE { override fun printName() { println("Cerc") } }, SQUARE { override fun printName() { println("Dreptunghi") } } } - Proprietăți încorporate: Fiecare constantă are proprietăți încorporate
name(numele constantei ca șir de caractere) șiordinal(poziția constantei în declarație, începând de la 0).enum class Priority { LOW, MEDIUM, HIGH } fun main() { println(Priority.MEDIUM.name) // Afișează: MEDIUM println(Priority.HIGH.ordinal) // Afișează: 2 } - Funcții încorporate:
enumValues<T>(): Returnează un array cu toate constantele din clasa enum.enumValueOf<T>(name: String): Returnează constanta enum cu numele dat. AruncăIllegalArgumentExceptiondacă nu se găsește constanta.
fun main() { val allPriorities = enumValues<Priority>() println(allPriorities.joinToString()) // Afișează: LOW, MEDIUM, HIGH val highPriority = enumValueOf<Priority>("HIGH") println(highPriority) // Afișează: HIGH } - Utilizarea în expresii
when: Sunt ideale pentru utilizare înwhen. Compilatorul va avertiza dacă nu toate ramurile sunt acoperite (atunci când sunt utilizate ca expresie cu valoare de returnare).fun processStatus(status: Status) { when (status) { Status.SUCCESS -> println("Succes") Status.ERROR -> println("Eroare") Status.PENDING -> println("Așteaptă") } }
Enum-urile în Kotlin sunt mai puternice comparativ cu cele din Java, permițând adăugarea de proprietăți, metode și implementarea de interfețe.