Skip to Content

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