2014-03-31 188 views
0

我知道我可以为此使用ArrayList,但我不明白为什么我不能将对象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); 
    } 
} 

Eclipse screenshot

+2

'TempTest#add' not'Object []#add' –

+0

为什么你认为一个数组(在Java中)有一个add方法?请阅读一些教程。 [Java教程](http://docs.oracle.com/javase/tutorial/index)中的[Arrays章节](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/array.html) .html)告诉你更多。 – Seelenvirtuose

+0

的确,我太快了。虽然我添加了'add'方法,它属于TempTest而不是Object []。我的错。 – minerals

回答

3

阵列没有add函数,您正在考虑Collections。

当你有一个特定大小的数组,你可以设置数组索引:

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

//... 
Object yourObj = arr[0]; //returns that object 

正如@SubhrajyotiMajumder指出,尝试调用类的本地实施方法:

this.add(yourObj); 

并从那里潜在的重构代码,以便你每次编辑相同的数组,而不是你在本地做的。

+0

数组不是数据结构?我认为你的意思是'收藏'。 – yamafontes

+0

@KepaniHaole正确,我的部分滑倒! – Rogue

+0

我希望我可以用'arr [0] .say();' – minerals

2

Object类没有叫add任何方法。它是一个数组,所以你需要使用索引来放置对象。

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

3

因为obj阵列,您只需通过索引添加元素:

obj[0] = someObject; 

在你的情况,你应该添加使用一个循环的元素,从0到4

为见Arrays更多信息。

1

obj是一个数组,可以通过

obj[0] = object1; 
0

你需要有提对象数组的索引,而不是add方法添加元素。

obj [array index] = p;