我想保持我的子类通用,我想改变的是add(Object)
ArrayList 的方法,这样当你调用它时它就不会添加任何东西arrayList.add(null)
(ArrayList 的正常实现会添加null
; 我希望它什么都不做)。
问问题
5750 次
4 回答
14
在这种情况下,您确实应该支持组合而不是继承,因为如果您忘记覆盖 ArrayList 中添加/更改元素的方法之一(例如,您可能忘记覆盖 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 方法的过滤器?如果仅从代码中的一个位置调用它,那么这可能是最简单的。一个简单的 if 语句可能会起作用。
if (input/object != null) {
arrayList.add(input/object);
}
else {
//do something else instead, or nothing
}
于 2014-09-05T06:44:32.003 回答
0
想要限制列表中的内容是完全值得尊敬的,尽管默默地无视一个论点是值得怀疑的。尽管如此,这就是我们拥有Apache Commons Collections的原因。可能有一个番石榴等价物。使用其中一个来声明 的final
子类ArrayList
,所以没有人可以颠覆你的意图。
于 2017-05-07T00:18:52.223 回答