我有下面的代码:Java的泛型和原始类型
ArrayList value = new ArrayList<Integer>(); // 1
value.add("Test"); // 2
我想了解线2。虽然我可以看到value.add("Test");
编译没有错误,我看不出它不”的原因t抛出一个运行时异常。如果value
引用通用的ArrayList
对象,为什么Java允许向其添加String
?任何人都可以解释给我吗?
我发现这个最接近的解释说明here,但我还是不明白的核心原因:
Stack s = new Stack<Integer>()
这是一个参数化类型的原始类型的法律转换。你将能够推动任何类型的价值。但是,任何此类操作都会导致“未检查呼叫”警告。
感谢您的回复! – Bleyder 2014-11-04 11:09:35