Я знаю, что вам не разрешено наследовать классы case, но как вы это сделаете, когда вам действительно нужно? У нас есть два класса в иерархии, оба содержат много полей, и мы должны иметь возможность создавать экземпляры обоих. Здесь мои варианты:
- Если бы я сделал суперкласс обычным классом вместо класса case, я потерял бы все классность класса case, например toString, equals, методы hashCode и т.д.
- Если я сохраню его как класс case, я бы нарушил правило не наследования классов case.
- Если я использую композицию в дочернем классе - мне придется писать много методов и перенаправлять их на другой класс - это будет означать много работы и будет чувствовать себя нескалистым.
Что мне делать? Разве это не общая проблема?