将对象转换为对象[] []

时间:2013-06-13 19:24:02

标签: java multidimensional-array casting

我需要将一个对象转换为一个多维数组,但无法弄清楚如何做到这一点。该对象可能包含任何对象的数组(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
        }
    }
}

4 个答案:

答案 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