2013-02-19 67 views
1

我對Java很陌生,在處理對象數組時遇到了問題,答案可能很簡單,但我看不到它。Java對象數組

我有一個類名爲向量和一個名爲set_components() 我嘗試做的是創建對象的一個​​這樣的數組功能:

Vectors[] vec = new Vectors[2]; 

//然後訪問功能是這樣的:

vec[0].set_components(); 

但是我得到這個錯誤:線程「main」中的異常java.lang.NullPointerException 這是爲什麼?

它的作品,如果我只爲一個對象做這個。

Vector vec = new Vector(); 
vec.set_components(); 

回答

5

你的數組已經被構造出來,但是沒有任何東西被填充,並且空引用。如果在用實例填充數組之前嘗試使用數組中的項目,則會看到一個NPE。想象一個像蛋箱一樣的對象數組。您必須先填寫雞蛋(矢量對象),然後才能使用它們製作煎蛋。通常這是通過for循環完成的。

for (int i = 0; i < vectors.length; i++) { 
    vectors[i] = new Vector(); 
} 
+0

謝謝!它現在的作品:)喜歡你的解釋。 – 2013-02-19 03:46:22

+0

@MarioFuentes:很高興幫助! – 2013-02-19 03:48:30

3

每個那些Vectors的應該初始化

這樣的:

for(int i = 0; i < vec.length; i++){ 
    vec[i] = new Vector(); 
} 

Vectors[] vec = new Vectors[2]行創建2 「載體」 的引用,而不是 「載體」 的對象。

其中的每一個最初都是指null。然後,當你試圖引用null參考說,vec[0]vec[0].set_components();,JVM說:「堅持,vec [0]指向null。我不能解除引用它..讓我只是拋出一個異常,稱爲NullPointerException」

0

Java對象從不顯示爲表達式,變量,參數或數組元素。如果它不是原始的,它就是一個參考。一個引用或者是null,或者是一個指向對象的指針。

您創建了一個空引用數組。您需要更改數組中的每個元素,使其成爲指向Vectors對象的指針:vec[0] = new Vectors();或類似的指針。