我有下面的代码片段,这很好用。它不应该抛出编译时错误,因为我已经定义c
了ArrayList
它将包含String
对象但我正在添加Integer
对象。那么为什么它没有抛出编译时/运行时错误呢?
Collection c = new ArrayList<String>();
c.add(123);
我知道下面会抛出编译时错误,但为什么不在上面。这两个代码片段之间的逻辑区别是什么?
Collection<String>() c = new ArrayList();
c.add(123);