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