gpt4 book ai didi

java - 对象被替换为最新的对象

转载 作者:行者123 更新时间:2023-12-01 17:14:54 26 4
gpt4 key购买 nike

我有一个名为 users 的类,它接受用于通过构造函数初始化新用户的参数,例如 ID 、 Name 、姓氏、密码和权限的整数值

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

最佳答案

正如评论中所建议的,Users 类中的字段不应是静态
它们链接到Users实例,而静态字段则链接到类本身。

因此,您实际上只有一个字段(嗯,一个用于userId,一个用于userName等.) 在 Users 的所有实例之间共享。

只要去掉那些static修饰符就可以了。我仍然建议您阅读this tutorial about class variables ,这对你将来确实有帮助。

关于java - 对象被替换为最新的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22654860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com