对于类型化的ArrayList list<E>
,为什么不删除方法就像
public boolean remove(E e) {
}
remove()和contains()方法将Object o作为参数。而add()需要E. 有可能有人可以使用不同的对象类型调用remove()并获得运行时错误。
答案 0 :(得分:0)
Arraylist实际上将项目存储在Object数组中:
$request->ajax()
在remove()方法中,它使用equals方法比较2个对象与数组中的项进行比较,如果没有找到任何内容,它就不会做任何事情。 (并且不会像你所认为的那样抛出运行时错误)它不需要关心类型是否与数组中的类型相匹配。
另外,如果我们有一个Object[] elementData;
和ArrayList<Cat> cats
,请回答here,那么我们应该可以通过以下方式调用cat上的删除:
Cat extends Animal
如果强制删除强制它只接受Animal siameseCat = new Cat("purrykitty");
cats.remove(siameseCat);
类型的对象,那么尽管这是一个合理的请求,但这种删除会抛出错误。
另一方面,add()方法需要确保数组不包含不匹配的项。