簡體   English   中英

對象被最新的替換

[英]objects being replaced with latest one

我有一個名為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類中的字段不應為static
它們鏈接到Users 實例 ,而靜態字段鏈接到類本身。

因此,實際上只有一個領域(當然,一個userId ,一個userName等)所的所有實例之間共享Users

只要擺脫那些static修飾符,你就應該很好。 我仍然建議您閱讀有關類變量的本教程 ,這對將來確實有幫助。

您定義的Users類肯定存在一些問題。可能被聲明為靜態的,因此針對所有Users實例(即temp1,temp2,temp3)更新了最新的temp3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM