让我们有下面的代码:另一个Java泛型混乱
public class TestGenerics {
static <T> void mix(ArrayList<T> list, T t) {
System.out.println(t.getClass().getName());
T item = list.get(0);
t = item;
System.out.println(t.getClass().getName());
}
public static void main(String[] args) {
ArrayList<Object> list = new ArrayList<Object>();
list.add(new Integer(3));
mix(list, "hello world");
}
}
在输出我得到:
java.lang.String
java.lang.Integer
这是废话 - 我们刚刚分配Integer
到String
没有得到ClassCastException
!我们不能这样写:
String s = new Integer(3);
但这就是我们刚才在这里所做的。
这是一个错误还是什么?