Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二维数组[]和数组[]之间的赋值是否合法?_Java - Fatal编程技术网

Java 二维数组[]和数组[]之间的赋值是否合法?

Java 二维数组[]和数组[]之间的赋值是否合法?,java,Java,让我们假设 Object[][]a; //a matrix of Objects Exception[] r; //an array of Exceptions 注意,异常是Object的子类 现在,什么时候 a = r; 是否在Java中合法?否,您需要将其分配给2d数组中的特定索引,并确保数组已初始化为从以下内容开始: Object[][] a = new Object[5][5]; Exception[] r = new Exception[5]; a[0] = r; 因为所有东西都

让我们假设

Object[][]a; //a matrix of Objects
Exception[] r; //an array of Exceptions
注意,异常是Object的子类

现在,什么时候

a = r;

是否在Java中合法?

否,您需要将其分配给2d数组中的特定索引,并确保数组已初始化为从以下内容开始:

Object[][] a = new Object[5][5];
Exception[] r = new Exception[5];
a[0] = r;
因为所有东西都是Object的子类,所以只要赋值的维度匹配,就可以在2d数组中存储任何东西。这意味着您将能够:

a = r                    => if r is a 2d array as well
a[index] = r             => if r is a 1d array
a[index-1][index-2] = r  => if r is any type extending Object

在Java中,数组是对象的类型。因此,您可以:

Object a = null;
Object[][][] b = null;

a = b;
这也允许:

Object a[] = null;
Object[][][][] b = null;

a = b

但你永远不能反过来做。

你怎么看?您的编译器告诉您什么?>异常[]无法再次转换为对象[][]:您认为如何?我投了反对票,因为。本例将花费您2分钟的时间亲自尝试。