Skip to main content
  1. Posts/

Kotlin Enum

·150 words·1 min
Ravi Singh
Author
Ravi Singh
Software engineer with 15+ years building backend systems and cloud platforms across fintech, automotive, and academia. I write about the things I build, debug, and learn — so I don’t forget them.

Let’s have a look at enums in kotlin. Unlike Java, where enum is a Type; in Kotlin, enums are classes

Defining an enum
#

enum class Direction {
    NORTH, SOUTH, WEST, EAST
}

Defining an enum with a variable
#

enum class Direction(val shortName: Char) {
    NORTH('N'), SOUTH('S'), WEST('W'), EAST('E')
}

Template Method pattern in Enum
#

enum class Direction(val shortName: Char) {
    NORTH('N') {
        override fun move() = "Moving in North Direction"
    },
    SOUTH('S') {
        override fun move() = "Moving in South Direction"
    },
    WEST('W'){
        override fun move() = "Moving in West Direction"
    },
    EAST('E'){
        override fun move() = "Moving in East Direction"
    };
    abstract fun move(): String
}

Companion methods in enum
#

enum class Direction(val shortName: String) {
  NORTH("N"), SOUTH("S"), WEST("W"), EAST("E");
  companion object {
      fun valueOfIgnoreCase(name: String) = valueOf(name.uppercase(Locale.getDefault()))
      fun valueOfShortName(shortName: String): Direction? = Direction.values().find { it.shortName == shortName }
  }
}

Links#


Discussion