问题描述:向List中添加对象,打印出来后发现所有对象均为最后一次添加的对象。


问题原因:
例:假如
进行初始化时其引用地址为A。
若其在外层进行初始化,虽然for循环了三次,但是对象只在最初初始化了一次,其地址一直为A不变。
那么,第一次循环,存入的值A{0, user0, address0}, list[0]存入的为地址A。
第二次循环,由于对象未再次初始化,此时A中的值被{1, user1, address1}覆盖。 list[1]存入的地址为A。
第三次循环同上。
循环结束后,list中三次存入的地址均为A, 而此时A对应的值为{2, user2,address2}。故打印list中的值时,三次的结果均为最后一次付给对象的值。
所以,为了保证上述问题不出现,只需要将对象初始化的时机放在每次for循环开始时,即循环内。这样就能保证,每个对象的引用都是不同的,也就保证了list中存入的对象的引用的唯一。


本文详细解释了在向List中添加对象时遇到的所有对象变为最后一个对象的问题原因,并提供了正确的对象初始化时机来解决这一问题。
4368

被折叠的 条评论
为什么被折叠?



