Kotlin Enum

Let’s have a look at enums in kotlin. Unlike Java, where enum is a Type; in Kotlin, enums are classes Defining an enum 1 2 3 enum class Direction { NORTH, SOUTH, WEST, EAST } Defining an enum with a variable 1 2 3 enum class Direction(val shortName: Char) { NORTH('N'), SOUTH('S'), WEST('W'), EAST('E') } Template Method pattern in Enum 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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 1 2 3 4 5 6 7 enum class Direction(val shortName: String) { NORTH("N"), SOUTH("S"), WEST("W"), EAST("E"); companion object { fun valueOfIgnoreCase(name: String) = valueOf(name....