编程语言
首页 > 编程语言> > 为什么java允许这个?

为什么java允许这个?

作者:互联网

这样做在语法上是合法的:

String [] s = new String[1];
Object [] o = s;

o[0] = new Integer(42);

但当然它会在运行时崩溃.

我的问题是:首先允许这项任务的重点是什么?

解决方法:

问题是赋值Object [] o = s; – 我认为你的意思是“这个”.

技术术语是array covariance,如果没有它,你就无法拥有一般处理数组的代码.例如,java.util.Arrays中的大多数非原始数组方法都是无用的,因为您只能将它们与实际的Object []实例一起使用.显然,Java的设计者认为这比完全类型安全更重要.

有一种替代解决方案,您可以在查看Java 5中引入的Java泛型时看到:通过通配符显式协方差.但是,这会导致相当大的复杂性(请参阅关于?通配符的不断问题),Java的原始设计者希望避免复杂性.

标签:java,syntax,semantics
来源: https://codeday.me/bug/20190716/1482967.html