When to use case class or regular class

前端 未结 6 1821
忘掉有多难
忘掉有多难 2020-12-24 10:43

I have some misunderstanding in what cases I should use case class or regular class following by best practices. I have already read about differences of both classes but ca

6条回答
  •  北荒
    北荒 (楼主)
    2020-12-24 11:30

    case classes are datacentric.

    We get following advantages by using case class over regular classes.

    (1) Value equivalence : It means that two case instances can be compared against values inside them.

    scala> case class Time(hours: Int = 0, mins: Int = 0)
    defined class Time
    
    scala> val time1 = Time(12, 13)
    time1: Time = Time(12,13)
    
    scala> val time2 = Time(11, 12)
    time2: Time = Time(11,12)
    
    scala> time1 == time2
    res6: Boolean = false
    
    scala> val time3 = Time(10, 11)
    time3: Time = Time(10,11)
    
    scala> time1 == time2
    res7: Boolean = false
    

    But other comparison operators(>, >= <, etc) are not defined.

    (2) Immutable Fields: Thread-safe

    (3) Automatic field creation: hours and minutes are immutable fields automatically created by Scala.

    scala> time1.hours
    res9: Int = 12
    

    case classes are also used in parsing spark DataFrame rows and advantage is that columns of DataFrame can be accessed by field name of case class.

提交回复
热议问题