在Java中,不允许通用子类型化,这意味着它将不起作用-
List<String> ls = new ArrayList<String>();
List<Object> lo = ls;
那是因为这样的事情不能执行,并且不会导致运行时错误-
lo.add(new Object());
String s = ls.get(0);
但是,如果您尝试过-
String a[] = {"see","biscuit","teleport"};
Object b [] = a;
即使数组仍然受到相同的可能的运行时错误问题的影响,它仍然可以工作-
b[0] = new Integer(33);
这将在运行时引发ArrayStoreException。 我的问题是,为什么有特定的原因为什么数组可以使用子类型而不是泛型?或者这只是一个错误,可以通过停止数组子类型的工作来解决?