Ключевое слово enum
Ключевое слово enum используется для объявления перечислений -
специальных классов, которые представляют фиксированный набор значений.
Каждое значение перечисления является объектом и объявляется через запятую.
Перечисления могут содержать свойства, методы и конструкторы.
Синтаксис
enum class EnumName {
VALUE1,
VALUE2,
VALUE3
}
enum class EnumName(val property: Type) {
VALUE1(value1),
VALUE2(value2),
VALUE3(value3)
fun method(): ReturnType {
// method body
}
}
Пример
Создадим простое перечисление дней недели:
enum class Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
Использование перечисления:
val today: Day = Day.MONDAY
println(today)
Результат выполнения кода:
MONDAY
Пример
Перечисление с свойствами и конструктором:
enum class Color(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF)
}
Доступ к свойству перечисления:
val color: Color = Color.RED
println(color.rgb)
Результат выполнения кода:
16711680
Пример
Перечисление с методами:
enum class Operation {
ADD {
override fun apply(x: Double, y: Double): Double = x + y
},
SUBTRACT {
override fun apply(x: Double, y: Double): Double = x - y
},
MULTIPLY {
override fun apply(x: Double, y: Double): Double = x * y
}
abstract fun apply(x: Double, y: Double): Double
}
Использование методов перечисления:
val result: Double = Operation.ADD.apply(5.0, 3.0)
println(result)
Результат выполнения кода:
Double 8.0
Пример
Получение всех значений перечисления:
enum class Direction {
NORTH, SOUTH, EAST, WEST
}
val directions: Array<Direction> = Direction.values()
for (dir in directions) {
println(dir)
}
Результат выполнения кода:
NORTH
SOUTH
EAST
WEST
Пример
Получение значения перечисления по имени:
enum class Status {
ACTIVE, INACTIVE, PENDING
}
val status: Status = Status.valueOf("ACTIVE")
println(status)
Результат выполнения кода:
ACTIVE
Смотрите также
-
ключевое слово
class,
которое используется для объявления классов -
ключевое слово
abstract,
которое используется для объявления абстрактных классов и методов -
ключевое слово
sealed,
которое используется для объявления sealed классов -
ключевое слово
data,
которое используется для объявления data классов