我写的例子:
List<String> str = new ArrayList<String>();
str.add("11");
List list = str;
list.add(2);
System.out.println(str);
ArrayList调用的toString方法:
public String toString() {
Iterator<E> it = iterator();
if (! it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = it.next();
//String s = (String)e;
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',').append(' ');
}
}
toString中的E不是代表String吗,System.out.println(str)这句话为什么不报错呢,
加上注释掉的 //String s = (String)e;就报类型转换异常,为什么会这样?