所以我试图访问我的ArrayList中元素的数据成员,但是eclipse显示数据成员不是字段。
System.out.println(users.get(i).name);
users是一个arrayList,语言是Java。
谢谢!
PS。
这是用户
的定义public class User {
public String name;
public String password;
}
我声明用户是这样的:
ArrayList users;
users=new ArrayList<User>(NOOFUSERS);
修正错误!!谢谢!
答案 0 :(得分:3)
您的ArrayList是以这种方式声明的吗?
ArrayList users = ...
如果是这样的话,这将解决您的问题。
ArrayList<User> users = ...
答案 1 :(得分: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.
答案 2 :(得分:0)
当Eclipse说“名称不是字段”时,这意味着属性名称不是“某个类”的属性。术语“某个类”是通用的,因为您没有报告声明ArrayList的代码行。 由于ArrayList是通用的,因此您可以指定其参数,即ArrayList包含的对象类型。如果不这样做,那么编译器(然后是Eclipse)假定它包含Objects的实例。 所以,你可能会宣布
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定义上获得的警告(“users is a raw type”)。