If you\'re writing code that\'s using lots of beautiful, immutable data structures, case classes appear to be a godsend, giving you all of the following for free with just o
One big disadvantage: a case classes can't extend a case class. That's the restriction.
Other advantages you missed, listed for completeness: compliant serialization/deserialization, no need to use "new" keyword to create.
I prefer non-case classes for objects with mutable state, private state, or no state (e.g. most singleton components). Case classes for pretty much everything else.