Как использовать классы case, когда нужна иерархия?

Я знаю, что вам не разрешено наследовать от case-классов, но как бы вы поступили, когда вам действительно нужно? ? У нас есть два класса в иерархии, оба содержат много полей, и нам нужно иметь возможность создавать экземпляры обоих. Вот мои варианты:

  • Если бы я сделал суперкласс обычным классом, а не классом case, я бы потерял все достоинства класса case, такие как toString, equals, методы hashCode и т. д.
  • Если я оставлю его как кейс-класс, я бы нарушил правило не наследоваться от кейс-классов.
  • Если бы я использовал композицию в дочернем классе — мне пришлось бы написать множество методов и перенаправить их в другой класс — что означало бы много работы и не было бы похоже на Scalaish.

Что мне делать? Не является ли это довольно распространенной проблемой?

15
задан uzilan 18 May 2012 в 07:17
поделиться