1.1.50.16. fejezet, Enum osztályok
Beküldte pzoli - 2024, április 22 - 8:38du
enum class Direction { NORTH, SOUTH, WEST, EAST }
Minden enum konstans egy objektum.
Anonim osztályok
enum class ProtocolState { WAITING { override fun signal() = TALKING }, TALKING { override fun signal() = WAITING }; abstract fun signal(): ProtocolState }
Interfész implementálása enum osztályba
enum class IntArithmetics : BinaryOperator<Int>, IntBinaryOperator { PLUS { override fun apply(t: Int, u: Int): Int = t + u }, TIMES { override fun apply(t: Int, u: Int): Int = t * u }; override fun applyAsInt(t: Int, u: Int) = apply(t, u) }
Hogyan használjuk
enum class RGB { RED, GREEN, BLUE } fun main() { for (color in RGB.entries) println(color.toString()) // prints RED, GREEN, BLUE println("The first color is: ${RGB.valueOf("RED")}") // prints "The first color is: RED" println(RGB.RED.name) // prints RED println(RGB.RED.ordinal) // prints 0 } enum class RGB { RED, GREEN, BLUE } inline fun <reified T : Enum<T>> printAllValues() { println(enumValues<T>().joinToString { it.name }) } printAllValues<RGB>() // prints RED, GREEN, BLUE
A Kotlin 1.9.20-ban bevezették a enumEntries
enum class RGB { RED, GREEN, BLUE } @OptIn(ExperimentalStdlibApi::class) inline fun <reified T : Enum<T>> printAllValues() { println(enumEntries<T>().joinToString { it.name }) } printAllValues<RGB>() // RED, GREEN, BLUE
Mivel az enumEntries kíséleti fázisban van, használjuk az @OptIn annotációt.
- A hozzászóláshoz be kell jelentkezni