用最新的对象替换对象

时间:2014-03-26 08:07:21

标签: java class object arraylist

我有一个名为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

2 个答案:

答案 0 :(得分:5)

根据评论中的建议,Users课程中的字段不应为static
它们与Users实例相关联,而静态字段则链接到类本身。

因此,您实际上只有 ONE 字段(嗯,一个用于userId,一个用于userName等) Users的所有实例。

摆脱那些static修饰符,你应该做得很好。我仍然建议你阅读this tutorial about class variables,这对你将来会有所帮助。

答案 1 :(得分:0)

肯定必须对你定义的Users类有一些问题。可能它被声明为static,所以最新的temp3更新为所有用户实例,即temp1,temp2,temp3