Java ArrayList indexOf泛型类型

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泛型类型(getsetaddaddAll等)。

但是方法containsindexOflastIndexOfremove对象类型作为参数-这仅是由于内部使用或Object.equals()或其他原因吗?

Ian*_*rts 5

收集类型仅E必须匹配才能使操作合法的情况下才使用其通用类型。如果您有一个字符串列表,那么显然add只有在传递字符串时类似的东西才有意义。

但是对于类似contains的操作,它是不同的-例如,询问字符串列表是否包含特定字符串是完全合法的Integer。答案将始终是“否”,但这并不意味着提出问题是错误的。