有人可以向我解释这里发生了什么以及为什么吗?编译器对最后一行的转换不满意,它说“无法从long []转换为long”:
long[][] l2d;
long[] l1d = {1,2,3};
Object o = l1d;
l2d = new long[3][3];
l2d[0][0] = (long[])o;
答案 0 :(得分:1)
l2d是长的二维数组。当您说'l2d [0] [0]'时,您正在寻址的是2D数组中的long类型的单个单元格。您只能为其分配“ long”。
答案 1 :(得分:1)
对象o是一个数组,您正在尝试将其分配为2维数组中的元素。因此long []不能转换为long。 l2d [0] [0]的长度很长,您正在尝试将其分配为long []。请尝试这个-
long[][] l2d;
long[] l1d = {1,2,3};
Object o = l1d;
l2d = new long[3][3];
l2d[0] = (long[])o;
答案 2 :(得分:0)
显然 l2d 是一个二维数组,因此 l2 [0] [0] 在此处应为 long值。但是 l1d 是一个简单的数组,因此对象 o 也是一个数组。的类型l2d [0] [0] 和 o 不匹配,尽管 o 已被强制转换为长数组。