当我尝试在一个列表中添加两个不同类型的元素时,为什么下面的代码没有出错?
List list1 = new ArrayList<>();
list1.add(1);
list1.add("1");
答案 0 :(得分:4)
如果您未将列表声明为特定类型,则会将其视为对象列表。
int 1自动装箱为Integer,“1”为String,因此两者都是对象。
答案 1 :(得分:2)
在Java 7
中它有效。对于以前的版本,您应该提供通用类型。由于您有2个不同的类型实例(Integer
和String
),因此它们的常见类型为Object
,因此您需要声明如下。
List list1 = new ArrayList<Object>();