好的,所以我有一个返回数组的 2D 数组。
Object[][] sample = new Object[1][1];
//ok just imagine sample already has an array inside of it
如何检索二维数组中的数组?
我尝试创建一个带有值的新数组,
object[] = sample[0][0];
但它只会产生错误。
当我打印的值
sample[0][0]
它返回值:[[Ljava.lang.Object;@4e25154f
我不知道如何解决这个问题。
sample[0][0]
Object
不是int[]
,sample[0]
可以是一维数组或任何Object
,请注意数组在Java中也是Object
的。
要打印多维数组,您可以使用Arrays.deepToString(twoDarray)
但是如果您专门存储了Object
,则此功能不起作用。
此外,[[Ljava.lang.Object;@4e25154f
是默认表示存储在sample[0][0]
的Object
toString
的结果,我认为这是一个数组。要打印阵列,您可以使用Arrays.toString(int[])
.
我想 这就是你想做的,
Object[][] obj = new Object[1][1];
obj[0][0] = new int[]{0,1,0,2};
System.out.println(obj);
//To get int[]
int[] arr= (int[]) obj[0][0];//Need to cast to the int[] specifically
//because it's currently stored as an Object
System.out.println(Arrays.toString(arr));
输出
[[Ljava.lang.Object;@1db9742
[0, 1, 0, 2]
sample[0][0] 返回的对象不是 int。首先你需要向下投射它,然后检索整数值
例如:-
CustomObject co = (CustomObject)sample[0][0]; // downcast here
然后从自定义对象中检索必填字段