问题描述:向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中存入的对象的引用的唯一。