Java-为什么不允许通用子类型但允许数组的子类型

问题描述

在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。 我的问题是,为什么有特定的原因为什么数组可以使用子类型而不是泛型?或者这只是一个错误,可以通过停止数组子类型的工作来解决

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)