我需要将一个对象转换为一个多维数组,但无法弄清楚如何做到这一点。该对象可能包含任何对象的数组(boolean [] [],int [] [],String [] []等)。以下是示例代码:
public static void main(String[] args) {
boolean[][] b = new boolean[10][10];
Object o = b;
Object[][] multiArray = (Object[][])o;
for(int i = 0; i < multiArray.length; i++) {
for(int j = 0; j < multiArray[i].length; j++) {
// Do something
}
}
}
答案 0 :(得分:4)
boolean[][]
是一个基元数组,因此虽然数组是协变的,因为boolean
不是Object
,它会告诉你一个错误,告诉你演员是非法的。您可能想要使用Boolean[][]
。另请注意,拆箱和装箱不适用于阵列。
答案 1 :(得分:3)
你做不到。 boolean
是基元,而不是引用类型。因此,虽然boolean
值的数组(或多维数组)本身是Object
,但它的元素仍然是boolean
值,而不是Object
的实例
如果您想拥有一组对象,则需要将boolean
值设置为Boolean
个对象。
请注意,您仍然可以使用循环编写代码而无需装箱:
for(int i = 0; i < b.length; i++) {
for(int j = 0; j < b[i].length; j++) {
// Do something with b[i][j] as a boolean
}
}
答案 2 :(得分:1)
将boolean
转换为Boolean
。然后,Java可以为您Boolean
转换为Object
(作为子类和超类)
答案 3 :(得分:1)
尝试这一点,注意原始boolean
数组被Boolean
数组替换(对其他数据类型的考虑相同,例如:使用Integer
代替{{ 1}}等),它们是对象类型,可以转换为int
:
Object