Java Elements in List not "automatically updating" -
first of all: forgot term "automatically updating", mean this:
int x = 5; int y = x; system.out.println(y); //prints 5 x = 3; system.out.println(y); //now prints 3! (note using reference: above example wrong addressed in comments.)
however tried approach on list, , not work, code:
relevant part of account.java:
public class account extends entity<string, account> { private string username; private string password; public account(final string username, final string password) { this.username = username; this.password = password; key = username; data.add(password); } public string getusername() { return username; } public void setusername(final string username) { this.username = username; } public string getpassword() { return password; } public void setpassword(final string password) { this.password = password; } } relevant part of entity.java:
abstract public class entity<k, d> { protected k key; protected list<object> data; public entity() { data = new arraylist<>(); } public k getkey() { return key; } public list<object> getdata() { return data; } protected list<object> createdata(final dataaction dataaction) { list<object> list = new arraylist<>(); if (dataaction == dataaction.insert) { list.add(key); } list.addall(data); if (dataaction == dataaction.update) { list.add(key); } return list; } } whenever have example account account = new account("test", "1");, , when use system.out.println(account.getdata()) prints [1], still correct. when execute account.setpassword("11"); , subsequently system.out.println(account.getdata()) still prints [1] instead of expected [11].
i expected data updated automatically x = y point same memory location.
any guess going on? error in implementation? or feature? , how can efficiently work around this?
regards.
edit: changed setpassword() below code, should work:
public void setpassword(final string password) { int index = data.indexof(this.password); this.password = password; data.set(index, password); } however wonder, there not better solution this? requires 3 lines of code of 2 of them can forgotten.
i think you're confused. code:
int x = 5; int y = x; system.out.println(y); //prints 5 x = 3; system.out.println(y); //now prints 3! ... not print 3. assignment:
int y = x; ... doesn't associate y , x variables each other. just copies current value of x y. further changes x not reflected in y.
Comments
Post a Comment