Bird
Raised Fist0
Kotlinprogramming~10 mins

Enum class declaration in Kotlin - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Enum class declaration
Start Enum Declaration
↓
Define Enum Name
↓
List Enum Constants
↓
Optional: Add Properties/Methods
↓
End Enum Declaration
This flow shows how an enum class is declared by naming it, listing constants, optionally adding properties or methods, and then finishing the declaration.
Execution Sample
Kotlin
enum class Direction {
    NORTH, SOUTH, EAST, WEST
}
Declares an enum class Direction with four constants representing directions.
Execution Table
StepActionEvaluationResult
1Start enum class declarationenum class Direction {Prepare to define Direction enum
2Add constant NORTHNORTHConstant NORTH added to Direction
3Add constant SOUTHSOUTHConstant SOUTH added to Direction
4Add constant EASTEASTConstant EAST added to Direction
5Add constant WESTWESTConstant WEST added to Direction
6End enum class declaration}Direction enum class ready with 4 constants
💡 All constants added, enum class declaration complete
Variable Tracker
VariableStartAfter 1After 2After 3After 4Final
Direction enum constantsemptyNORTHNORTH, SOUTHNORTH, SOUTH, EASTNORTH, SOUTH, EAST, WESTNORTH, SOUTH, EAST, WEST
Key Moments - 2 Insights
Why do enum constants not have parentheses here?
In the execution_table rows 2-5, constants are simple names without parentheses because no constructor parameters are used.
Can enum classes have functions or properties?
Yes, as shown in the concept_flow step 'Optional: Add Properties/Methods', you can add functions or properties inside the enum class after constants.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the state of Direction constants after step 3?
ANORTH, SOUTH, EAST
BNORTH, SOUTH
CNORTH
Dempty
💡 Hint
Check variable_tracker column 'After 2' which corresponds to step 3 in execution_table
At which step does the enum class declaration complete?
AStep 4
BStep 5
CStep 6
DStep 2
💡 Hint
Look at execution_table row with action 'End enum class declaration'
If you add a property to the enum class, which step in concept_flow would it appear?
AOptional: Add Properties/Methods
BList Enum Constants
CDefine Enum Name
DEnd Enum Declaration
💡 Hint
Refer to concept_flow step after listing constants
Concept Snapshot
enum class Name {
  CONSTANT1, CONSTANT2, ...
  // Optional properties or methods
}
- Enum constants are fixed values
- Can add functions or properties inside
- Used to represent limited set of options
Full Transcript
An enum class in Kotlin is declared by writing 'enum class' followed by the name and curly braces. Inside, you list constants separated by commas. These constants represent fixed options. Optionally, you can add properties or functions inside the enum class after the constants. The execution flow starts with declaring the enum, adding each constant one by one, and then finishing the declaration. Variables track the constants added step by step. Beginners often wonder why constants don't have parentheses; this is because no constructor parameters are used here. Also, enum classes can have functions or properties inside them. The declaration completes after all constants are added and the closing brace is reached.

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

  1. Step 1: Understand enum class purpose

    An enum class is designed to hold a fixed set of constants that belong together logically.
  2. 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.
  3. Final Answer:

    To group a fixed set of related constants under one type -> Option B
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    enum class Direction { NORTH, SOUTH, EAST, WEST } -> Option A
  4. 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

  1. Step 1: Understand enum constant property 'name'

    Each enum constant has a built-in name property that returns its exact name as a string.
  2. Step 2: Analyze the code output

    The code prints c.name where c is Color.GREEN, so it prints "GREEN" exactly as declared.
  3. Final Answer:

    GREEN -> Option D
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    Missing comma after MEDIUM -> Option C
  4. 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

  1. Step 1: Understand enum property declaration

    To add a property, declare a constructor parameter in the enum class and pass values to each constant.
  2. 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.
  3. Final Answer:

    enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) } fun main() { println(Color.RED.rgb) } -> Option A
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard