Java Arraylist remove方法将Object作为参数,而不是E.

时间:2015-10-01 20:29:07

标签: java arraylist generic-collections

对于类型化的ArrayList list<E>,为什么不删除方法就像

public boolean remove(E e) {
}

remove()和contains()方法将Object o作为参数。而add()需要E. 有可能有人可以使用不同的对象类型调用remove()并获得运行时错误。

1 个答案:

答案 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()方法需要确保数组不包含不匹配的项。