サブクラスをジェネリックに保ちたいのですが、変更したいadd(Object)
のは ArrayList のメソッドだけで、呼び出し時に何も追加されないようにしますarrayList.add(null)
(ArrayList の通常の実装ではnull
; 何もしないでください)。
5750 次
4 に答える
14
この場合、要素を追加/変更する ArrayList のメソッドの 1 つをオーバーライドするのを忘れた場合 (たとえば、set をオーバーライドするのを忘れる可能性があります)、null 要素を持つ可能性があるため、継承よりも構成を優先する必要があります。 .
しかし、質問は ArrayList をサブクラス化する方法に関するものだったので、次のようにします。
import java.util.ArrayList;
public class MyArrayList<T> extends ArrayList<T> {
public boolean add(T element) {
if (element != null) return super.add(element);
return false;
}
}
于 2012-05-06T23:20:03.310 に答える
0
add メソッドが呼び出される場所にフィルターを実装することを検討しましたか? コード内の 1 か所だけから呼び出されている場合は、それが最も簡単な場合があります。単純な if ステートメントが機能する場合があります。
if (input/object != null) {
arrayList.add(input/object);
}
else {
//do something else instead, or nothing
}
于 2014-09-05T06:44:32.003 に答える