ケースクラスからの継承が許可されていないことは知っていますが、本当に必要な場合はどうしますか? 階層内に 2 つのクラスがあり、どちらにも多くのフィールドが含まれており、両方のインスタンスを作成できる必要があります。ここに私のオプションがあります:
- スーパークラスをケースクラスではなく通常のクラスにすると、toString、equals、hashCode メソッドなどのすべてのケースクラスの利点が失われます。
- ケースクラスのままにしておくと、ケースクラスから継承しないというルールを破ることになります。
- 子クラスでコンポジションを使用すると、多くのメソッドを記述して他のクラスにリダイレクトする必要があります。これは、多くの作業を意味し、非 Scalaish に感じられることを意味します。
私は何をすべきか?よくある問題ではないでしょうか。