无法从long []转换为long

时间:2019-12-05 03:31:27

标签: java arrays casting

有人可以向我解释这里发生了什么以及为什么吗?编译器对最后一行的转换不满意,它说“无法从long []转换为long”:

    long[][] l2d;
    long[] l1d = {1,2,3};

    Object o = l1d;
    l2d = new long[3][3];
    l2d[0][0] = (long[])o;

3 个答案:

答案 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 已被强制转换为长数组。