2014-09-21 75 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定义(“用户是原始类型”)上的警告。