Scala has a feature called case class, while Kotlin has another feature called data class. Which are the main differences between Scala case class and Kotlin data class?
2 Answers
Overall they are very similar, but there are some differences I'd mention:
Scala case class can have multiple parameter lists (including implicit parameters), and only parameters from the first list are used for
toString
/equals
/hashCode
.Scala allows a case class to have no parameters, Kotlin doesn't. Of course, usually such a case class should be an
object
instead.On that note,
case object
s exist.The companion object of a case class extends the corresponding function type by default.

- 167,066
- 35
- 309
- 487
Scala case class creates a class which:
- Defines accessor functions (getters and setters basically)
- Overrides naturally hashcode, toString and equals functions
- Provides a copy function in order to create in an easy way shallow copies.
Kotlin data class does pretty much the same thing as Scala case class:
Defines accessor functions (getters and setters basically)
Overrides naturally hashcode, toString and equals functions
- Provides a copy function in order to create in an easy way shallow copies.
The main differences between the two is the fact that Scala provides a more powerful pattern matching feature compared to Kotlin (in fact Kotlin doesn't have real pattern matching).

- 4,345
- 5
- 27
- 56