为什么可以将String插入List< Integer>在以下代码中?我有一个类,它将数字插入到整数列表中:
public class Main {
public static void main(String[] args) {
List list = new ArrayList();
list.add(2);
list.add(3);
list.add(4);
Inserter inserter = new Inserter();
inserter.insertValue(list);
System.out.print(list);
}
}
然后我有一个单独的类,它将一个String插入一个List,数字字符串值为“42”:
public class Inserter {
void insertValue(List list)
{
list.add(new String("42"));
}
}
当我将String添加到整数列表时,为什么编译器不会引发编译器错误,或者运行时抛出运行时异常,例如* CastException?另外,为什么System.out.print(list)会产生如下所示的输出而不会抛出任何异常?
[2, 3, 4, 42]
允许所有这些发生的根本原因是什么?