2012-06-28 33 views
2

類對象的我已經建立了一個類來模仿C#的結構:陣列中的Android

public class Favourite { 
    protected String favName; 
    protected String favText; 
    protected String favDelay; 
    protected GeoPoint favPoint; 
    protected Uri favUri; 
} 

我要創建這個類的一個數組:

Favourite[] fav; 

當我嘗試訪問該array:

fav[s].favName = bufr; 

我得到一個NullPointerException。 bufr確實包含數據。我已經跟蹤它訪問陣列,如下面的代碼:

fav[s].favName = ""; 

也產生一個NullPointerException。

我已經搜索了高和低的一些跡象,說明我在做什麼是允許的但是找不到任何東西。

我想我的問題是:

你可以創建一個類的對象數組? 如果是這樣,你如何參考該數組?

我知道我可以使用五個單獨的變量數組來做到這一點,但我覺得把它們放到一個類中會給出更好的結構,並且更優雅(我喜歡優雅)。

+0

您是否已初始化fav [s],使favName存在? – BlackVegetable

回答

8

問題是fav[s]爲空。

我不知道C#,但在Java中,你必須單獨初始化數組的元素;你不能只聲明數組並自動填充它。

你將不得不循環通過fav並填充新的Favourite對象。

要麼分配fav[s] = new Favourite()您使用fav[s]的第一次,或做

for (int i = 0; i < fav.length; i++) { 
    fav[s] = new Favourite(); 
} 
+0

在C#中,如果OP創建了一個結構體,它將是一個值類型,因此該數組將充滿「空」值。對於給定的類型,這將是一個糟糕的主意,請注意,它不像自然值類型。我會明天嘗試將你轉換成C#; –

+0

哈。期待它。 –

1

你需要把物品放入數組的初始化一次這一切。聲明的數組在每個槽中只有空值;你需要做一些像fav[s] = new Favourite()

3
Favourite[] fav = new Favourite[23]; // Allocate an array of 23 items 

現在你有他們23!