Integer[][] documents = { {1, 4, 3, 2, 3, 1, 4, 3, 2, 3, 1, 4, 3, 2, 3, 6},
{2, 2, 4, 2, 4, 2, 2, 2, 2, 4, 2, 2},
{1, 6, 5, 6, 0, 1, 6, 5, 6, 0, 1, 6, 5, 6, 0, 0},
{5, 6, 6, 2, 3, 3, 6, 5, 6, 2, 2, 6, 5, 6, 6, 6, 0},
{2, 2, 4, 4, 4, 4, 1, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 0},
{5, 4, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2}};
int[][] convertDocument = documents;
编译器说不兼容的类型:Integer [] []无法转换为int [] [] ... 怎么解决这个?
答案 0 :(得分:1)
您必须迭代列表并将每个元素转换为int基元。数组是Java中的特殊对象,因此int[][]
和Integer[][]
彼此完全无关。这就像尝试将Foo
投射到Bar
一样。但 支持从Integer
到int
的隐式强制转换。这称为自动装箱,您可以在primitives[i][j] = documents[i][j]
行下方看到它,其中单个Integer
被隐式投射到原始int
。
int[][] convertToPrimitives(Integer[][] documents) {
int[][] primitives = new int[documents.length][];
for (int i=0;i<documents.length;i++) {
primitives[i] = new int[documents[i].length];
for (int j=0;j<documents[i].length;j++) {
primitives[i][j] = documents[i][j];
}
}
return primitives;
}