8

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?

Dina Bogdan
  • 4,345
  • 5
  • 27
  • 56

2 Answers2

7

Overall they are very similar, but there are some differences I'd mention:

  1. Scala case class can have multiple parameter lists (including implicit parameters), and only parameters from the first list are used for toString/equals/hashCode.

  2. Scala allows a case class to have no parameters, Kotlin doesn't. Of course, usually such a case class should be an object instead.

  3. On that note, case objects exist.

  4. The companion object of a case class extends the corresponding function type by default.

Alexey Romanov
  • 167,066
  • 35
  • 309
  • 487
6

Scala case class creates a class which:

  1. Defines accessor functions (getters and setters basically)
  2. Overrides naturally hashcode, toString and equals functions
  3. 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:

  1. Defines accessor functions (getters and setters basically)

  2. Overrides naturally hashcode, toString and equals functions

  3. 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).

Dina Bogdan
  • 4,345
  • 5
  • 27
  • 56