📖 Scenario: Imagine you are creating a simple app that needs to handle different types of weather conditions.
🎯 Goal: You will create an enum class in Kotlin to represent different weather types.
📋 What You'll Learn
Create an enum class named Weather with specific weather types
Add a variable to hold a current weather value
Use the enum class in a simple function
Print the current weather
💡 Why This Matters
🌍 Real World
Enum classes help represent fixed sets of related constants, like days, states, or categories, making code clearer and safer.
💼 Career
Understanding enum classes is important for Kotlin developers working on Android apps or backend services where fixed sets of options are common.
Progress0 / 4 steps
1
Create the enum class
Create an enum class called Weather with these exact entries: SUNNY, CLOUDY, RAINY, SNOWY.
Kotlin
Hint
Use the enum class keyword followed by the name Weather. List the weather types separated by commas inside curly braces.
2
Create a variable for current weather
Create a variable called currentWeather of type Weather and set it to Weather.SUNNY.
Kotlin
Hint
Use val currentWeather: Weather = Weather.SUNNY to create the variable.
3
Write a function to describe the weather
Write a function called describeWeather that takes a parameter weather of type Weather and returns a String. Use a when expression on weather to return these exact strings: "It's sunny today!" for Weather.SUNNY, "It's cloudy today." for Weather.CLOUDY, "It's raining." for Weather.RAINY, and "Snow is falling." for Weather.SNOWY.
Kotlin
Hint
Use a when expression to check the weather parameter and return the matching string.
4
Print the current weather description
Print the result of calling describeWeather with currentWeather.
Kotlin
Hint
Use println(describeWeather(currentWeather)) inside a main function to print the weather description.
Practice
(1/5)
1. What is the main purpose of an enum class in Kotlin?
easy
A. To define a function that returns multiple values
B. To group a fixed set of related constants under one type
C. To create a class that can be instantiated multiple times
D. To declare a variable that can hold any data type
Solution
Step 1: Understand enum class purpose
An enum class is designed to hold a fixed set of constants that belong together logically.
Step 2: Compare options with enum usage
Only To group a fixed set of related constants under one type correctly describes grouping related constants under one type, which is the main use of enum classes.
Final Answer:
To group a fixed set of related constants under one type -> Option B
Quick Check:
Enum class purpose = group constants [OK]
Hint: Enums group fixed constants for clarity and safety [OK]
Common Mistakes:
Thinking enums are for creating multiple instances
Confusing enums with regular classes
Believing enums can hold any data type variable
2. Which of the following is the correct syntax to declare an enum class named Direction with constants NORTH, SOUTH, EAST, and WEST?
easy
A. enum class Direction { NORTH, SOUTH, EAST, WEST }
B. class enum Direction { NORTH, SOUTH, EAST, WEST }
C. enum Direction { NORTH; SOUTH; EAST; WEST }
D. enum class Direction = (NORTH, SOUTH, EAST, WEST)
Solution
Step 1: Recall Kotlin enum class syntax
Kotlin enum classes start with enum class followed by the name and curly braces containing constants separated by commas.
Step 2: Check each option's syntax
enum class Direction { NORTH, SOUTH, EAST, WEST } matches the correct syntax. Options A, C, and D have incorrect keywords, punctuation, or structure.
Final Answer:
enum class Direction { NORTH, SOUTH, EAST, WEST } -> Option A
Quick Check:
Correct enum syntax = enum class Direction { NORTH, SOUTH, EAST, WEST } [OK]
Hint: Use 'enum class Name { CONST1, CONST2 }' syntax [OK]
Common Mistakes:
Using 'class enum' instead of 'enum class'
Separating constants with semicolons instead of commas
Assigning enum constants with '=' instead of listing
3. What will be the output of the following Kotlin code?
enum class Color { RED, GREEN, BLUE }
fun main() {
val c = Color.GREEN
println(c.name)
}
medium
A. green
B. Color.GREEN
C. 1
D. GREEN
Solution
Step 1: Understand enum constant property 'name'
Each enum constant has a built-in name property that returns its exact name as a string.
Step 2: Analyze the code output
The code prints c.name where c is Color.GREEN, so it prints "GREEN" exactly as declared.
Final Answer:
GREEN -> Option D
Quick Check:
Enum constant name property = GREEN [OK]
Hint: Enum.name returns constant name as string [OK]
Common Mistakes:
Expecting lowercase output
Printing enum constant directly without .name
Confusing ordinal number with name
4. Identify the error in this Kotlin enum class declaration:
enum class Size {
SMALL,
MEDIUM
LARGE
}
medium
A. Cannot declare enum class without constructor
B. Enum constants must be lowercase
C. Missing comma after MEDIUM
D. Enum class must have at least 5 constants
Solution
Step 1: Check enum constants separation
Enum constants must be separated by commas except the last one. Here, MEDIUM is missing a comma after it.
Step 2: Validate other options
Constants can be uppercase, no constructor is required, and no minimum count is needed. So only missing comma is the error.
Final Answer:
Missing comma after MEDIUM -> Option C
Quick Check:
Enum constants separated by commas [OK]
Hint: Separate enum constants with commas except last [OK]
Common Mistakes:
Omitting commas between constants
Using lowercase for constants (not required)
Thinking constructor is mandatory
5. How can you add a property rgb to an enum class Color that stores the color's RGB integer value, and access it for Color.RED? Choose the correct code snippet.
hard
A. enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }
fun main() { println(Color.RED.rgb) }
B. enum class Color { RED = 0xFF0000, GREEN = 0x00FF00, BLUE = 0x0000FF }
fun main() { println(Color.RED.rgb) }
C. enum class Color { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }
fun main() { println(Color.RED.rgb) }
D. enum class Color { RED, GREEN, BLUE }
fun main() { println(Color.RED.rgb) }
Solution
Step 1: Understand enum property declaration
To add a property, declare a constructor parameter in the enum class and pass values to each constant.
Step 2: Check each option for correct syntax
enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }
fun main() { println(Color.RED.rgb) } correctly declares val rgb: Int in constructor and assigns values. enum class Color { RED = 0xFF0000, GREEN = 0x00FF00, BLUE = 0x0000FF }
fun main() { println(Color.RED.rgb) } uses invalid assignment syntax. enum class Color { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }
fun main() { println(Color.RED.rgb) } misses constructor declaration. enum class Color { RED, GREEN, BLUE }
fun main() { println(Color.RED.rgb) } has no property defined.
Final Answer:
enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }
fun main() { println(Color.RED.rgb) } -> Option A
Quick Check:
Enum property via constructor = enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) }
fun main() { println(Color.RED.rgb) } [OK]
Hint: Add properties via constructor parameters in enum class [OK]
Common Mistakes:
Trying to assign values with '=' inside enum constants
Not declaring constructor parameters in enum class
Accessing property that was never declared
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.