2 回答

TA貢獻2019條經驗 獲得超9個贊
您Employee兩次添加了相同的引用:
e.setEmployeeName("Rishabh Bansal");
list.add(e);
e.setEmployeeName("Jack Reacher");
list.add(e);
但是這兩個引用仍然指向同一個對象,你正在改變它。
所以你也應該在這里創建新對象。

TA貢獻1811條經驗 獲得超6個贊
這是您的列表在前兩個 add() 之后的樣子:
[oid1, oid2]
oid1 和 oid2 是指向其狀態保存在別處的對象的“指針”(引用):
oid1 := Employee("1026751","Jack Reacher")
oid2 := Employee("1026722","Tom Cruise")
在兩個 .get() 之后,您在這些對象上有兩個“句柄”:
e == oid1
p == oid2
然后清除列表,使列表變為:
[]
然后您更改兩個對象之一的狀態并將其添加到列表中,以便您擁有:
[oid1]
oid1 := Employee("1026751","Rishabh Bansal")
oid2 := Employee("1026722","Tom Cruise")
然后您更改同一對象的狀態并將其再次添加到列表中,這樣您就擁有:
[oid1, oid1]
oid1 := Employee("1026751","Jack Reacher")
oid2 := Employee("1026722","Tom Cruise")
所以索引 0 上的對象僅僅因為你的要求而改變了。如果你只有一個對象,你就只有一種狀態。想要列表中的三個州?需要三個對象。
添加回答
舉報