Skip to content
DeveloperMemos

Using Enums in Kotlin

Kotlin, Enums1 min read

Enums, short for enumerations, are a powerful feature in Kotlin that allow you to define a set of named constants. They provide a convenient way to represent a fixed number of possible values or states in your code. In this article, we'll delve into the world of enums and see how they can be leveraged in Kotlin for Android development.

Defining an Enum

To create an enum in Kotlin, you use the enum keyword followed by the name of the enum. Let's say we want to define an enum to represent different types of fruits:

1enum class Fruit {
2 APPLE,
3 BANANA,
4 ORANGE,
5 MANGO
6}

In the above example, we've defined a simple enum called Fruit with four possible values: APPLE, BANANA, ORANGE, and MANGO. These values are treated as instances of the Fruit enum class.

Working with Enums

Once you have defined an enum, you can use it just like any other data type. Here are a few ways you can work with enums in Kotlin:

Initializing Enum Variables

You can declare a variable of an enum type and assign one of the enum values to it:

1val myFruit: Fruit = Fruit.APPLE

Enum Properties

Enums can have properties associated with each value. For example, let's add a property called color to our Fruit enum:

1enum class Fruit(val color: String) {
2 APPLE("red"),
3 BANANA("yellow"),
4 ORANGE("orange"),
5 MANGO("orange")
6}

Now, each value in the enum has an associated color. You can access this property using dot notation:

1val appleColor = Fruit.APPLE.color // "red"
2val bananaColor = Fruit.BANANA.color // "yellow"

Enum Functions

Enums can also define functions just like any other class:

1enum class Fruit {
2 APPLE,
3 BANANA,
4 ORANGE,
5 MANGO;
6
7 fun isTasty(): Boolean {
8 return this != BANANA
9 }
10}

In the above example, we've added a function called isTasty() to our Fruit enum. This function returns true for all fruits except BANANA. You can call this function on any instance of the Fruit enum:

1val myFruit: Fruit = Fruit.APPLE
2val isTasty = myFruit.isTasty() // true

Using Enums in Android Development

Enums can be particularly useful in Android development. They can represent different states or options within your app. For example, you could use an enum to define the different screen states of a login flow:

1enum class LoginScreenState {
2 IDLE,
3 LOADING,
4 SUCCESS,
5 ERROR
6}

By utilizing enums, you can ensure that only valid states are used throughout your codebase, reducing the chances of errors and improving code readability.