私は現在、チェスのゲームを書くの独立したプロジェクトに取り組んでいます。私が現在直面している問題は、すべての法的な動きを決定するときに呼び出されるMove(タイプ説明)型のarraylistを返すメソッドがあるということです。これはうまくいきますが、キャッスルと呼ばれるクラスを導入しました。これはMoveを拡張しています(これは通常の移動とは異なり、キャスティングは2つではなく4つのスクエアに影響するためです)。のJavaのArrayList:同じArrayListに親クラスとサブクラスの追加、ソリューション
私は自己完結型であるか、またはタイプの移動とその子城のオブジェクトを含む有効な移動のすべてを返すことができるように)(メソッドのgetMovesをしたいと思います。
getMoves(move型の配列リストを返す)に有効なキャスト動作を追加する宣言を含めると、問題が発生します。arraylistを型移動として追加して情報が失われる、またはb。)戻りのarraylistをすべての城のタイプに変更し、明らかに方法を破るタイプの城。
これを達成するための任意の優雅な方法はありますか?私はgetMovesメソッドを独立して保持しながら、移動クラスを書き直すことなくこの問題を解決する方法を探しています。
「タイプの移動としてarraylistを追加する」という意味を理解できません。あなたはコードでそれを実証できますか? – immibis
Moveクラスを拡張するCastleクラスの代わりに、 "Castle"タイプのMoveクラス内にプロパティを作成しないでください。 例コード: 'クラス移動{ プライベート城の城。 // castleプロパティ // getter setter below } ' –