🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
Introduction
In Kotlin, the enum class represents a type that consists of a fixed set of constants. Enums are commonly used to represent a collection of related values that are known at compile time, such as days of the week, directions, states, etc. They provide a type-safe way to define and use constants.
Table of Contents
- What is an
enumClass? - Creating
enumClasses - Accessing
enumConstants - Enum Properties and Methods
- Enum Functions
- Examples of
enum - Real-World Use Case
- Conclusion
1. What is an enum Class?
An enum class in Kotlin is a special type that represents a group of constants. Each constant is an instance of the enum class, and enums can have properties, methods, and implement interfaces.
Syntax
enum class Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
2. Creating enum Classes
To create an enum class, use the enum keyword followed by the class name and a list of constants.
Example
enum class Color {
RED, GREEN, BLUE
}
3. Accessing enum Constants
You can access enum constants using the dot notation.
Example
fun main() {
val favoriteColor = Color.BLUE
println("Favorite color is $favoriteColor")
}
4. Enum Properties and Methods
Enums can have properties and methods. You can define properties and methods just like in regular classes.
Example
enum class Day(val isWeekend: Boolean) {
SUNDAY(true),
MONDAY(false),
TUESDAY(false),
WEDNESDAY(false),
THURSDAY(false),
FRIDAY(false),
SATURDAY(true);
fun printDayType() {
if (isWeekend) {
println("$this is a weekend")
} else {
println("$this is a weekday")
}
}
}
fun main() {
Day.SATURDAY.printDayType()
Day.MONDAY.printDayType()
}
Output:
SATURDAY is a weekend
MONDAY is a weekday
5. Enum Functions
Kotlin provides several useful functions for working with enums:
values(): Returns an array of all enum constants.valueOf(name: String): Returns the enum constant with the specified name.
Example
fun main() {
// Using values()
val days = Day.values()
for (day in days) {
println(day)
}
// Using valueOf()
val day = Day.valueOf("MONDAY")
println("Day: $day")
}
Output:
SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
Day: MONDAY
6. Examples of enum
Example 1: Enum with Properties
This example demonstrates defining an enum with properties and methods.
enum class Direction(val degrees: Int) {
NORTH(0),
EAST(90),
SOUTH(180),
WEST(270);
fun printDirection() {
println("Direction $this is $degrees degrees from NORTH")
}
}
fun main() {
Direction.NORTH.printDirection()
Direction.EAST.printDirection()
}
Output:
Direction NORTH is 0 degrees from NORTH
Direction EAST is 90 degrees from NORTH
Explanation:
This example defines an enum Direction with a property degrees and a method printDirection.
Example 2: Enum Implementing Interface
This example demonstrates an enum implementing an interface.
interface Printable {
fun print()
}
enum class Status : Printable {
PENDING {
override fun print() {
println("Pending status")
}
},
COMPLETED {
override fun print() {
println("Completed status")
}
},
FAILED {
override fun print() {
println("Failed status")
}
}
}
fun main() {
Status.PENDING.print()
Status.COMPLETED.print()
Status.FAILED.print()
}
Output:
Pending status
Completed status
Failed status
Explanation:
This example defines an enum Status that implements the Printable interface.
Example 3: Enum with Custom Methods
This example demonstrates an enum with custom methods.
enum class Planet(val mass: Double, val radius: Double) {
MERCURY(3.303e+23, 2.4397e6),
VENUS(4.869e+24, 6.0518e6),
EARTH(5.976e+24, 6.37814e6),
MARS(6.421e+23, 3.3972e6);
// Universal gravitational constant (m3 kg-1 s-2)
val G = 6.67300e-11
fun surfaceGravity(): Double {
return G * mass / (radius * radius)
}
fun surfaceWeight(otherMass: Double): Double {
return otherMass * surfaceGravity()
}
}
fun main() {
val earthWeight = 70.0
val mass = earthWeight / Planet.EARTH.surfaceGravity()
for (p in Planet.values()) {
println("Your weight on ${p.name} is ${p.surfaceWeight(mass)}")
}
}
Output:
Your weight on MERCURY is 26.46076506257041
Your weight on VENUS is 63.72066045970312
Your weight on EARTH is 70.0
Your weight on MARS is 26.46720159485788
Explanation:
This example defines an enum Planet with properties mass and radius, and methods to calculate surface gravity and surface weight.
7. Real-World Use Case: User Roles in an Application
Enums can be used to define user roles in an application.
Example: Defining User Roles
enum class UserRole(val permissions: List<String>) {
ADMIN(listOf("READ", "WRITE", "DELETE")),
USER(listOf("READ", "WRITE")),
GUEST(listOf("READ"));
fun printPermissions() {
println("$this has permissions: ${permissions.joinToString()}")
}
}
fun main() {
UserRole.ADMIN.printPermissions()
UserRole.USER.printPermissions()
UserRole.GUEST.printPermissions()
}
Output:
ADMIN has permissions: READ, WRITE, DELETE
USER has permissions: READ, WRITE
GUEST has permissions: READ
Explanation:
This example defines an enum UserRole with a property permissions and a method printPermissions to display the permissions for each role.
Conclusion
The enum class in Kotlin provides a way to define a fixed set of constants and associate properties and methods with them. Enums are useful for representing a group of related values and can simplify the code by providing a type-safe way to work with constants. Understanding how to use enums and their features is essential for effective Kotlin programming, especially when dealing with predefined sets of values.
My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:
Build REST APIs with Spring Boot 4, Spring Security 7, and JWT
[NEW] Learn Apache Maven with IntelliJ IDEA and Java 25
ChatGPT + Generative AI + Prompt Engineering for Beginners
Spring 7 and Spring Boot 4 for Beginners (Includes 8 Projects)
Available in Udemy for Business
Building Real-Time REST APIs with Spring Boot - Blog App
Available in Udemy for Business
Building Microservices with Spring Boot and Spring Cloud
Available in Udemy for Business
Java Full-Stack Developer Course with Spring Boot and React JS
Available in Udemy for Business
Build 5 Spring Boot Projects with Java: Line-by-Line Coding
Testing Spring Boot Application with JUnit and Mockito
Available in Udemy for Business
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Available in Udemy for Business
Master Spring Data JPA with Hibernate
Available in Udemy for Business
Spring Boot + Apache Kafka Course - The Practical Guide
Available in Udemy for Business
Comments
Post a Comment
Leave Comment