2011-06-04 40 views
1

在網站和谷歌搜索似乎沒有進來,因爲我敢肯定是一個超級簡單的問題。我的Java列表中出現null,實例化它似乎不工作......幫助?

所以我有一個名單,我宣佈像這樣:

private List<Integer> mList; 

當我嘗試做一個方法就可以像mList.add(...);它不工作,返回一個空指針異常。我嘗試實例化列表如下:

public Class() { 
    mList = new List<Integer>(); 

但是這也是不正確的,至少根據我的IDE Eclipse。當我搜索周圍的內容時,我似乎無法正確地說出問題,因爲就像這樣簡單,沒有真正顯示我想要做什麼,而沒有將其作爲ArrayList或其他我不想做的事情。感謝這個簡單的問題。

+0

列表是一個接口... http://download.oracle.com/javase/6/docs/api/java/util/List.html您可以實例化ArrayList,因爲它實現了List http:// download .oracle.com/javase/6/docs/api/java/util/ArrayList.html – ignis 2011-06-04 00:12:00

+0

此外,它拋出一個空指針異常的原因是,如果您不在構造函數中初始化字段mList,類將默默初始化該字段爲空:) – ignis 2011-06-04 00:13:13

回答

5

變量在使用前必須初始化。否則它是空的,你會得到NullPointerExceptions。

Java有接口,它們就像只有已定義方法的類。但是你不能從它們創建真實的物體。他們只是爲了定義合同。

java.util.List就是這樣一個接口。

您必須使用實現該接口的實體類

例如,

private List<Integer> mList = new ArrayList<Integer>(); 

java.util.ArrayList是List的一個實現,這將按照您的期望執行。

+0

啊......我認爲列表和ArrayList兩種不同類型的集合或東西。謝謝您的幫助!一旦時間限制結束,我會將其標記爲答案。 – JMRboosties 2011-06-04 00:11:49

+0

+1 - 這是一個很好的答案! – MByD 2011-06-04 01:02:01

1

您不能實例化List的類型,因爲它是一個接口。挑選的List的實現,如ArrayList,如下面的代碼:

List<Integer> mList = new ArrayList<Integer>(); 
4

應聲明並創建實例。此外,list is an interface,所以你不能用列表實例化它。相反,使用實現列表的類來實例化它。例如:

private List<Integer> mList = new ArrayList<Integer>(); 
2

List是一個接口並不能直接使用new被實例化。使用其中的一個實現,如ArrayListLinkedList

mList = new ArrayList<Integer>();