33. Enum Classes
An enum class defines a fixed set of constants. Each constant can carry constructor arguments, and the enum can declare methods shared by all of them.
enum class Planet(val gravity: Double) {
EARTH(9.81),
MARS(3.71),
MOON(1.62);
fun weightOf(massKg: Double) = massKg * gravity
}
fun main() {
for (p in Planet.entries) { // Kotlin 2.x: entries
println("${p.name} #${p.ordinal} g=${p.gravity}")
}
val mars = Planet.valueOf("MARS")
println("weight on Mars: ${mars.weightOf(80.0)}")
val msg = when (mars) {
Planet.EARTH -> "home"
Planet.MARS, Planet.MOON -> "away"
}
println(msg)
}
entries (preferred in Kotlin 2.x over values()) lists all constants, valueOf looks one up by name, and each constant exposes name and ordinal. A when over an enum reads cleanly.
Running it:
$ kotlin run
EARTH #0 g=9.81
MARS #1 g=3.71
MOON #2 g=1.62
weight on Mars: 296.8
away
| ← Prev | Index | Next → |