【发布时间】:2014-11-04 18:53:56
【问题描述】:
我有下一个代码:
ArrayList value = new ArrayList<Integer>(); // 1
value.add("Test"); // 2
我试图理解第 2 行。虽然我可以看到 value.add("Test"); 编译时没有错误,但我看不出它没有引发运行时异常的原因。如果value 引用了一个通用的ArrayList 对象,为什么Java 允许向它添加String?谁能给我解释一下?
我找到的最接近的解释描述为here,但我仍然不明白核心原因:
Stack s = new Stack<Integer>()这是从参数化类型到原始类型的合法转换。您将能够推送任何类型的值。但是,任何此类操作都会导致“未经检查的调用”警告。
【问题讨论】: