我有一个方法,它将char [] []作为参数(基本上是字符的NxN网格)并使用ArrayDeque来查看整个2d数组。我想从ArrayDeque中删除char [] []对象的行和列,并且当前使用它:
ArrayDeque stack=new ArrayDeque();
stack.push(grid[0][0]); //grid being the 2d array passed to the method
char[][] temp=(char[][]) stack.pop();
int row=temp.length-1;
int column=temp[0].length-1;
这在Eclipse中编译,但在运行时会抛出ClassCastException。有没有办法在上面的第二行中没有char [] []的情况下获取行和列?
答案 0 :(得分:1)
ArrayDeque
在做什么? Nothing!您添加一个值并将其取回。
虽然假设grid
是char[][]
,并且知道push()
需要Object
,但它会隐式自动装箱值。
简而言之,你得到的是:
temp = (char[][])Character.valueOf(grid[0][0])
您正在向Character
投放char[][]
,所以当然您会获得ClassCastException
。