Case objects vs Enumerations in Scala

Scala | Case objects vs Enumerations: Here, we will see the difference between case objects and Enumerations in Scala.
Submitted by Shivang Yadav, on December 26, 2020

Case Objects

Case objects in Scala are instances of case class which is a regular class with an added pattern matching feature.


caseObjName = caseClassName(parameter_values)

Program to illustrate the creation of case objects in Scala

// Program to illustrate the creation of case objects in Scala

// Creating a Case Class
case class student(name: String, standard: Int, marks: Int, result: String )

object myObject {
    def main(args: Array[String]) {
        // Creating a case Object 
        val student1 = student("Prem", 10, 89, "A+")
        println("Case Object: " + student1)


Case Object: student(Prem,10,89,A+)


Enumeration is a feature in Scala used to define a group of constants.


object enum_object extends Enumeration {
    type enum_object = value 
    /// Assigning value 
    val name1 = Value("value")

Program to illustrate creation of Enumeration in Scala

// Program to illustrate the creation of Enum in Scala...

object Main extends Enumeration { 
    type Main = Value 
    val day1 = Value("Sunday") 
    val day2 = Value("Monday") 
    val day3 = Value("Tuesday") 
    val day4 = Value("Wednesday") 
    val day5 = Value("Thursday") 
    val day6 = Value("Friday") 
    val day7 = Value("Saturday") 
    def main(args: Array[String]) {
        println("Value of Enum : " + Main.values ) 


Value of Enum : Main.ValueSet(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday)

Difference between Case objects and Enumerations in Scala

  • Case objects are more flexible than enumeration when it comes to pattern matching.
  • In enumeration, iterating over all instances is not possible. But in case of case class overheads are required.
  • Enumerations are just a set of constants and once added all values are constant and only some limited methods are provided.

Comments and Discussions!

Load comments ↻

Copyright © 2024 All rights reserved.