Middle
Ի՞նչ առանձնահատկություններ ունի Kotlin-ում Enum դասերի հետ աշխատելը։
sobes.tech AI
Պատասխան AI-ից
Էնմ դասը՝ դա հատուկ տեսակի դաս է, որը օգտագործվում է կոնստանտների հավաքածուն ներկայացնելու համար:
Հատկություններ՝
- Կոնստանտների սահմանում: Յուրաքանչյուր enum կոնստանտը՝ enum դասի օրինակ:
enum class Color { RED, GREEN, BLUE } - Արժեքներ և մեթոդներ: Enum դասերը կարող են ունենալ հատկություններ և մեթոդներ։ Յուրաքանչյուր կոնստանտ կարող է դրանք տարբեր կերպ իրականացնել:
enum class Status(val description: String) { SUCCESS("Գործողությունը հաջողությամբ կատարվեց"), ERROR("Սխալ է տեղի ունեցել"), PENDING("Սպասում") } enum class Direction { NORTH, SOUTH, EAST, WEST; fun getOpposite(): Direction { return when (this) { NORTH -> SOUTH SOUTH -> NORTH EAST -> WEST WEST -> EAST } } } - Անանուն դասեր: Յուրաքանչյուր enum կոնստանտ կարող է հայտարարվել անանուն դասով, որը տրամադրում է իր սեփական մեթոդների կամ հատկությունների իրականացմանը:
enum class State { IDLE { override fun signal() = READY }, READY { override fun signal() = IDLE }; // Կետով և կետադրական նշանով պարտադիր է դասի անդամների հայտարարությունից առաջ abstract fun signal(): State } - Ինտերֆեյսների իրականացում: Enum դասը կարող է իրականացնել ինտերֆեյսներ:
interface Printable { fun printName() } enum class Shape : Printable { CIRCLE { override fun printName() { println("Բոլոր") } }, SQUARE { override fun printName() { println("Քառակուս") } } } - Ներքին հատկություններ: Յուրաքանչյուր կոնստանտ ունի ներքին հատկություններ՝
name(կոնստանտի անունը տողային ձևով) ևordinal(կոնստանտի դիրքը հայտարարության մեջ, սկսած 0-ից):enum class Priority { LOW, MEDIUM, HIGH } fun main() { println(Priority.MEDIUM.name) // Արտածում՝ MEDIUM println(Priority.HIGH.ordinal) // Արտածում՝ 2 } - Ներքին ֆունկցիաներ:
enumValues<T>(): Վերադարձնում է բոլոր կոնստանտների զանգվածը:enumValueOf<T>(name: String): Վերադարձնում է կոնստանտը՝ ըստ անվան:
fun main() { val allPriorities = enumValues<Priority>() println(allPriorities.joinToString()) // Արտածում՝ LOW, MEDIUM, HIGH val highPriority = enumValueOf<Priority>("HIGH") println(highPriority) // Արտածում՝ HIGH } - Օգտագործում
whenարտահայտություններում: Իդեալական է օգտագործելուwhen-ում։ Կոմպիլյատորն զգուշացնի, եթե բոլոր դեպքերը չեն պատված:fun processStatus(status: Status) { when (status) { Status.SUCCESS -> println("Հաջողություն") Status.ERROR -> println("Սխալ") Status.PENDING -> println("Սպասում") } }
Kotlin-ի enum-ները ավելի հզոր են, քան Java-ի համարժեքները, թույլ տալով ավելացնել հատկություններ, մեթոդներ և իրականացնել ինտերֆեյսներ։