新手学写程序,统计一个特定的字符在一个二维数组中出现的次数:
class Position
{
public int x, y;
public Position(){ x = y = 0; }
public Position(int X, int Y) { x = X; y = Y; }
}
...Stack stack = new Stack();...
stack.add(new Position(i, j));
...Position pos[] = stack.toArray();编译时出错:
Statistic.java:79: incompatible types
found   : java.lang.Object[]
required: Position[]
                Position pos[] = move.toArray();怎么改?

解决方案 »

  1.   

    stack.toArray()返回的是Object[],父类型复制给子类型必须显式转换。Object[] temp = stack.toArray();
    Position pos[] = new Position[i];
    for(int i=0; i<temp.length; i++)
    {
        pos[i] = (Position)temp[i];
    }
      

  2.   

    toArray
    public Object[] toArray()
    Returns an array containing all of the elements in this Vector in the correct order. Specified by:
    toArray in interface List
    Overrides:
    toArray in class AbstractCollection
    Returns:
    an array containing all of the elements in this list in proper sequence.
    Since: 
    1.2 
    See Also:
    Arrays.asList(Object[])试试Position pos[] = (Position)stack.toArray();
      

  3.   

    Position pos[] = (Position[])stack.toArray(stack.size());
      

  4.   

    刚才回答错了,不好意思。后面高手解释吧,我也是一个个来的    Collection c = (Collection) s;
            TestStack[] ts1 = new TestStack[5];
            int j = 0;
            for (Iterator iter = c.iterator(); iter.hasNext();) {
                ts1[j++] = (TestStack) iter.next();
            }
      

  5.   

    Position pos[] = (Position[])stack.toArray(stack.size());这句能编译吗?toArray(Object[] a),参数给个int?
      

  6.   

    Position pos[] = (Position[])stack.toArray(stack.size());
    编译可以过,但运行会有ClassCastException异常。          Object
             /      \
    Object[]         Position[]二者的父类都是Object,他们之间并不存在继承关系,所以不能强转。
      

  7.   

    ^_^写错了
    Position pos[] = (Position[])stack.toArray(new Position[stack.size()]);