Если вы пишете код, который использует множество красивых, неизменных структур данных, классы case выглядят как находка, давая вам все следующие бесплатно только с одним ключевым словом:
- Все неизменное по умолчанию
- Получатели автоматически определены
- Достойная реализация toString()
- Соответствие equals() и hashCode()
- Объект Companion с методом unapply() для сопоставления
Но каковы недостатки определения неизменяемой структуры данных как класса case?
Какие ограничения он устанавливает для класса или его клиентов?
Есть ли ситуации, когда вы предпочитаете класс, не относящийся к какому-либо случаю?