2014-09-21 76 views
0

所以我試圖訪問我的ArrayList中元素的數據成員,但eclipse顯示數據成員不是字段。ArrayList Java訪問元素數據變量

System.out.println(users.get(i).name); 

用戶是arrayList,語言是Java。

謝謝!

PS。

這是我宣佈用戶這樣用戶

public class User { 
    public String name; 
    public String password; 
} 

的定義:

ArrayList users; 
users=new ArrayList<User>(NOOFUSERS); 

修正了錯誤!謝謝!

+0

請發佈用戶的定義,以及它包含的元素類型。 – 2014-09-21 21:51:11

+0

如果你想幫助調試你的代碼,你將不得不展示更多的東西。 – 2014-09-21 21:51:25

+0

public class用戶{ \t \t \t public String name; \t public String password; – rkat 2014-09-21 21:52:40

回答

3

你的ArrayList是這樣聲明的嗎?

ArrayList users = ... 

如果是這種情況,這將解決您的問題。

ArrayList<User> users = ... 
+0

明白了!謝謝!! – rkat 2014-09-21 21:58:50

+0

@rkat如果這個anwser是正確的,你應該接受。只需點擊投票計數器下面的複選標記即可。 – Tom 2014-09-22 17:35:39

3

ArrayList users; 
users=new ArrayList(NOOFUSERS); 

Raw Type並且它不編程爲List接口(在Oracle的Java教程here描述)。我反而使用的接口之類的東西,

List<User> users = new ArrayList<>(); // <-- diamond operator Java 7 and above, 
             //  use <User> for 5 and 6. 
0

當Eclipse說:「名字是不是場」,這意味着該屬性名稱不是「一些類」的屬性。術語「某個類」是通用的,因爲您不報告聲明ArrayList的代碼行。 由於ArrayList是通用的,因此您可以指定其參數,即ArrayList包含的對象的類型。如果你不這樣做,那麼編譯器(然後是Eclipse)假定它包含對象的實例。 所以,你可能會宣佈

ArrayList users = new ArrayList(); // ArrayList of Objects, which do not have any field called "name" 

如果指定參數用戶是這樣的:

ArrayList<User> users = new ArrayList<User>(); // ArrayList of Users 

您將修復編譯錯誤。另外,這樣你將刪除你可能在ArrayList定義(「用戶是原始類型」)上的警告。