クラス階層全体にオプションの変数を実装する「クリーンな」方法があるかどうか疑問に思っています.nullのままにして常にnullcheckingする必要はありません。次の抽象親クラスがあるとします。
public abstract class Item {
public String name;
public Item(String name){
this.name = name;
}
public String getName(){
return name;
}
かなり簡単です。これを拡張する別の抽象クラスと、それを拡張するいくつかの抽象クラスがあり、それぞれに独自の変数/メソッドがいくつか追加されています。Item には、それを拡張するスタブ クラスもあります (super() を呼び出すコンストラクター以外は何もありません)。これは、Item を具象化できる場合は必要ないかもしれませんが、それはソリューションによって異なります。
ここで、これらの具象クラスのいずれにも、潜在的に MyObject のインスタンスが含まれている可能性があるとしましょう。大量のアイテムが作成されます。Item 階層内のいずれかのクラスのインスタンスの一部にはそれがあり、一部にはありません。プログラムがコンパイル時に通知する方法はありません。階層を 2 つの別個のほぼ同一のツリー (MyObject を含むツリーと含まないツリー) に実際に分割することはできません。これにより、多くのコードの重複が発生します。MyObject を含む別の具象クラスで具象実装をサブクラス化すると、過剰な型チェックが行われ、特に階層が大きくなると見苦しくなります。インターフェイス/抽象クラスをさらに上に配置することも、すべてに MyObject を配置するため、オプションではありません。解決策はともかく、
私はつまらないかもしれませんし、階層の最上位に MyObject を実装して nullcheck するか、単純なブール値メソッドを使用して存在するかどうかを教えてください。可能であれば、より良い解決策。