X
フィールドが含まれるクラスがありますA
。これは、コンストラクターで初期化される最終フィールドです。Y
これで、このフィールドが常に のインスタンスである必要がある派生クラスができました。これB
は、から派生したクラスですA
。問題は、クラスY
は、クラス B でのみ使用でき、その祖先では使用できない特定のメソッドを呼び出す必要があることですA
。
いくつかの解決策があります:
A
から継承された型のフィールドを再利用しX
、クラス内Y
で にキャストA
しB
ます。これにより、私のコードは厄介な型キャストでいっぱいになります。- type の別のフィールドを追加します
B
。現在、型キャストはありませんが、常に同じ値を保持する必要があるわずかに異なる型の 2 つのフィールドがあります。これも気分が悪いです。 - 、throw
B
にも提供するすべてのメソッドを追加します。これにより、そのクラスでは意図的に意味をなさないいくつかの奇妙なメソッドが追加されます。A
NotImplementedException
このフィールドを処理する最も正しい方法はどれですか? それとも、他にもっと良いものが存在するのでしょうか?これは言語固有のものではないと思いますが、私が使用している Java で実行できるはずです。