用最新的对象替换对象

the*_*der 0 java class arraylist object

我有一个名为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);
Run Code Online (Sandbox Code Playgroud)

然后我将它们添加到一个列表中,该列表可以跟踪当前创建的所有用户,例如:

datastorage.adduser(temp1);
datastorage.adduser(temp2);
datastorage.adduser(temp3);
Run Code Online (Sandbox Code Playgroud)

我的数据存储类看起来像这样:

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());

    }


}
Run Code Online (Sandbox Code Playgroud)

当我运行adduser方法时,我想检查在控制台中查看添加新用户后我在listofusers中的所有当前用户,而不是打印出来:

id1 pass1
id2 pass2
id3 pass3
Run Code Online (Sandbox Code Playgroud)

我没有得到类似的东西:

id1 pass1
id1 pass1
id2 pass2
id1 pass1
id2 pass2
id3 pass3
Run Code Online (Sandbox Code Playgroud)

小智 5

正如评论中所建议的那样,您Users班级中的字段不应该是static.
他们都与实例Users,而静态字段被链接到类本身.

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

只是摆脱那些static修饰符,你应该是好的.我仍然建议你阅读这个关于类变量的教程,它将来会对你有所帮助.