让我们看看一些Set<E>
方法声明。
public boolean add(E e);
public E get(int index);
让我们尝试使用它。
List<Boolean> list = new ArrayList<Boolean>();
Integer i = list.get(0); //Predictably, here we get a compile error.
list.contains(new Integer(3)); //But this line is allowed. Why?
即使在此代码的非通用等效项中(据我所知,它会简单地转换为它),我们在两行中都会遇到编译错误。
List s = new ArrayList();
s.contains((Boolean)(new Integer(3)));
Integer i = (Boolean)s.get(3);
那么为什么我在一般情况下没有得到错误呢?