Enum Class trong Kotlin
🎯 Mục tiêu: Hiểu Enum - tập hợp các hằng số có tên, với properties và methods.
💡 Khái niệm
Enum định nghĩa một tập hợp cố định các giá trị với tên có ý nghĩa.
enum class Direction {
NORTH, SOUTH, EAST, WEST
}
fun main() {
val dir = Direction.NORTH
println(dir) // NORTH
}📝 Enum với Properties
enum class Color(val hex: String, val rgb: Triple<Int, Int, Int>) {
RED("#FF0000", Triple(255, 0, 0)),
GREEN("#00FF00", Triple(0, 255, 0)),
BLUE("#0000FF", Triple(0, 0, 255))
}
fun main() {
val color = Color.RED
println("${color.name}: ${color.hex}") // RED: #FF0000
}🔧 Enum với Methods
enum class Operation {
ADD {
override fun apply(a: Int, b: Int) = a + b
},
SUBTRACT {
override fun apply(a: Int, b: Int) = a - b
},
MULTIPLY {
override fun apply(a: Int, b: Int) = a * b
};
abstract fun apply(a: Int, b: Int): Int
}
fun main() {
println(Operation.ADD.apply(5, 3)) // 8
println(Operation.MULTIPLY.apply(5, 3)) // 15
}🎯 Enum với when (Exhaustive)
enum class Status { LOADING, SUCCESS, ERROR }
fun handleStatus(status: Status) = when (status) {
Status.LOADING -> "Loading..."
Status.SUCCESS -> "Done!"
Status.ERROR -> "Failed!"
// Không cần else - compiler biết đã cover hết
}📊 Built-in Properties
enum class Day { MONDAY, TUESDAY, WEDNESDAY }
fun main() {
val day = Day.TUESDAY
println(day.name) // TUESDAY
println(day.ordinal) // 1 (index)
// All values
Day.values().forEach { println(it) }
// Hoặc Kotlin 1.9+
Day.entries.forEach { println(it) }
// Parse from string
val parsed = Day.valueOf("MONDAY")
}✅ Checklist
- Tạo enum class cơ bản
- Thêm properties cho enum
- Thêm methods cho enum
- Sử dụng với when (exhaustive)
Tiếp theo: Sealed Class
Last updated on