2014-03-31 186 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;