Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我不能将对象添加到对象[]数组?_Java_Arrays - Fatal编程技术网

Java 为什么我不能将对象添加到对象[]数组?

Java 为什么我不能将对象添加到对象[]数组?,java,arrays,Java,Arrays,我知道我可以使用ArrayList来实现这一点,但我不明白为什么我不能将Object intance添加到以下Object[]数组中 class Penguin { public void say(){ System.out.println("Hi, I am a penguin!"); } } public class TempTest { private Object[] items; private int next = 0; pri

我知道我可以使用ArrayList来实现这一点,但我不明白为什么我不能将Object intance添加到以下Object[]数组中

class Penguin {
    public void say(){
        System.out.println("Hi, I am a penguin!");
    }
}
public class TempTest {
    private Object[] items;
    private int next = 0;
    private int i = 0;
    public void add(Object x){
        if(next < items.length)
            items[next++] = x;
    }
    public boolean end() { return i == items.length; }
    public Object current() { return items[i]; }
    public void next() { if(i < items.length) i++; }

    public static void main(String[] args) {
        Object[] obj = new Object[5];
        Object p = new Penguin();
        obj.add(p);
    }
}
对象类没有任何名为add的方法。它是一个数组,所以你需要使用索引放置对象

另外,创建一个对象数组也不是一个好主意,除非你真的需要这样做。更好地使用集合。

数组没有添加功能,您考虑的是集合

当具有特定大小的数组时,可以设置该数组的索引:

Object[] arr = new Object[2];
arr[0] = /* your object */;

//...
Object yourObj = arr[0]; //returns that object
正如@subbrajyotimajumder所指出的,尝试调用类的本地方法实现:

this.add(yourObj);
从这里可以重构代码,以便每次都编辑相同的数组,而不是本地创建的数组。

因为obj是一个数组,所以只需通过索引添加元素:

obj[0] = someObject;
在您的例子中,您应该使用循环添加元素,从0到4

有关更多信息,请参阅

而不是

obj.add(p);
obj是一个数组,您可以通过

obj[0] = object1;

您需要在这里提到对象数组索引,而不是add方法


obj[数组索引]=p

为什么您认为Java中的数组有add方法?请阅读一些教程。事实上,我太快了。虽然我添加了add方法,但它属于testest not Object[]。我的错。数组不是数据结构吗?“我想你指的是收藏。”科帕尼霍勒说得对,我有点滑倒!我希望可以使用arr[0]访问企鹅对象;不要将其设置为对象数组,而是将其设置为具有say方法的某个公共接口的数组:
obj[0] = object1;