Vla*_*aly 3 java generics arraylist generic-collections
ArrayList描述为
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
Run Code Online (Sandbox Code Playgroud)
而且大多数主要方法都适用于E泛型类型(get,set,add,addAll等)。
但是方法contains,indexOf,lastIndexOf和remove将对象类型作为参数-这仅是由于内部使用或Object.equals()或其他原因吗?
收集类型仅E在必须匹配才能使操作合法的情况下才使用其通用类型。如果您有一个字符串列表,那么显然add只有在传递字符串时类似的东西才有意义。
但是对于类似contains的操作,它是不同的-例如,询问字符串列表是否包含特定字符串是完全合法的Integer。答案将始终是“否”,但这并不意味着提出问题是错误的。