Java 将对象强制转换为对象[][]

Java 将对象强制转换为对象[][],java,multidimensional-array,casting,Java,Multidimensional Array,Casting,我需要将一个对象强制转换为多维数组,但不知道如何执行。该对象可能包含任意对象的数组(布尔[]、int[]、字符串[],等等)。下面是一个示例代码: public static void main(String[] args) { boolean[][] b = new boolean[10][10]; Object o = b; Object[][] multiArray = (Object[][])o; for(int i = 0; i < mult

我需要将一个对象强制转换为多维数组,但不知道如何执行。该对象可能包含任意对象的数组(布尔[]、int[]、字符串[],等等)。下面是一个示例代码:

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
        }
    }
}
publicstaticvoidmain(字符串[]args){
布尔[][]b=新的布尔[10][10];
对象o=b;
对象[][]多数组=(对象[][])o;
对于(int i=0;i
boolean[][]
是一个基元数组,因此尽管数组是协变的,但由于
boolean
不是
对象,它会给您一个错误,告诉您强制转换是非法的。您可能需要使用
布尔[][]
。还要注意,取消装箱和装箱在数组上不起作用。

您不能这样做。
boolean
是基本类型,而不是引用类型。因此,虽然
布尔值的数组(或多维数组)本身就是
对象
,但它的元素仍然是
布尔值,而不是
对象
的实例

如果希望有一个对象数组,则需要将
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
    }
}
for(int i=0;i
布尔值
转换为
布尔值
。然后Java可以为您(作为子类和超类)将
Boolean
转换为
Object

试试这个,注意到原始
Boolean
的数组被
Boolean
的数组所取代(其他数据类型也需要考虑,例如:使用
Integer
代替
int
,等等),哪些是对象类型,可以强制转换为
对象

public static void main(String[] args) {

    Boolean[][] b = new Boolean[10][10];
    // fill b with values

    Object[][] multiArray = new Object[10][10];

    for(int i = 0; i < multiArray.length; i++) {
        for(int j = 0; j < multiArray[i].length; j++) {
            multiArray[i][j] = b[i][j]; // no cast is needed
        }
    }

}
publicstaticvoidmain(字符串[]args){
布尔[][]b=新的布尔[10][10];
//用值填充b
对象[][]多数组=新对象[10][10];
对于(int i=0;i
“我需要将对象强制转换为多维数组”