编译时出错:-表达式的类型必须是数组类型,但是它解析为Object

时间:2019-01-08 13:34:30

标签: java arrays

错误:-表达式的类型必须是数组类型,但已解析为Object

class ArrayExample{

    private Object[] objArray = new Object[4];
    private int number = 0;
    public void add(Object obj) {
        if(number == objArray.length) {
            increaseCapacity();
        }

        objArray[number] = obj;
            number++;
    }

    public void increaseCapacity() {
        int newCapacity = objArray.length*2;
        Object NewArray = new Object[newCapacity];

            for(int i=0; i<objArray.length; i++) {
                NewArray[i] =objArray[i];

            }

            objArray =  NewArray;
    }

    public String toString() {
        String str="";
        int num = 0;

        while(objArray[num] != null) {
            str = str+ objArray[num];
            num++;
        }   
        return str;
    }
}

public class ObjectArray {

    public static void main(String[] args) {
        ArrayExample col= new ArrayExample();
        col.add("chandan");
        col.add(10);
        col.toString();
        System.out.println(col);
    }
}

错误:-当我尝试使用for循环将objArray复制到NewArray时,在编译时出现了此错误。请帮帮我

2 个答案:

答案 0 :(得分:0)

问题是您已将NewArray定义为普通的对象变量,它应该是对象数组

Object[] NewArray = new Object[newCapacity]; code here

答案 1 :(得分:0)

这会很好!

public class ArrayExample {
    private Object[] objArray = new Object[4];
    private int number = 0;
    public void add(Object obj) {
        if(number == objArray.length) {
            increaseCapacity();
        }
        objArray[number] = obj;
        number++;
    }

    public void increaseCapacity() {
        int newCapacity = objArray.length*2;
        Object NewArray[];
        NewArray = new Object[newCapacity];
        System.arraycopy(objArray, 0, NewArray, 0, objArray.length);
        objArray =  NewArray;
    }

    @Override
    public String toString() {
        String str="";
        int num = 0;
        while(objArray[num] != null) {
            str = str+ objArray[num];
            num++;
        }   
        return str;
    }
}
public class ObjectArray {
    public static void main(String[] args) {
        ArrayExample col= new ArrayExample();
        col.add("chandan");
        col.add(10);
        col.toString();
        System.out.println(col);
    }
}