我有一个名为users的类,它接受用于通过构造函数初始化新用户的参数,如ID,Name,last name,password和权限的整数值
Users temp1 = new Users("id1","name1","lname","pass1",0);
Users temp2 = new Users("id2","name1","lname","pass2",0);
Users temp3 = new Users("id3","name1","lname","pass3",0);
然后我将它们添加到一个列表中,该列表跟踪当前创建的所有用户,如:
datastorage.adduser(temp1);
datastorage.adduser(temp2);
datastorage.adduser(temp3);
我的数据存储类看起来像这样:
public class datastorage {
static ArrayList<Users> userlist = new ArrayList<Users>();
}
public static void adduser(Users temp){
userlist.add(temp);
for (Users user : userlist) {
System.out.println(user.getuserName() + " "+ user.getPassword());
}
}
当我运行adduser方法时,我想在控制台中查看我在listofusers中添加新用户后的所有当前用户,而不是打印出来:
id1 pass1
id2 pass2
id3 pass3
我没有得到类似的东西:
id1 pass1
id1 pass1
id2 pass2
id1 pass1
id2 pass2
id3 pass3
答案 0 :(得分:5)
根据评论中的建议,Users
课程中的字段不应为static
。
它们与Users
的实例相关联,而静态字段则链接到类本身。
因此,您实际上只有 ONE 字段(嗯,一个用于userId
,一个用于userName
等) Users
的所有实例。
摆脱那些static
修饰符,你应该做得很好。我仍然建议你阅读this tutorial about class variables,这对你将来会有所帮助。
答案 1 :(得分:0)
肯定必须对你定义的Users类有一些问题。可能它被声明为static,所以最新的temp3更新为所有用户实例,即temp1,temp2,temp3