这个问题在这里已经有答案了:
如何在java中复制对象(23个答案)
4个月前关门了。
我有个问题,我需要一些帮助。
我有一个对象,例如contact,带有string name、string adress和string phone变量
我创建了这个对象的数组
Contact[] homeContacts = new Contact[10];
homeContacts[0] = new Contact();
...
...
homeContacts[9] = new Contact();
我像这样填充每个变量
homeContacts[0].name="jim"
homeContacts[0].adsress ="Oak road 52"
homeContacts[0].phone="555-6363633"
我继续使用家庭联系人[1]等等
现在假设我创建了第二个数组联系人[10]
Contact[] workContacts = new Contact[10];
workContacts[0] = new Contact();
...
...
workContacts[9] = new Contact();
我将家庭联系人的值大量复制到工作联系人,就像这样
workContacts=homeContacts;
现在,homecontacts数组的每个变量都与workcontacts数组的值具有相同的引用!例如,如果我更改了work homecontacts[0].name=“peter”的名称,它也会更改workcontacts[0].name为peter,但我希望能够在不影响workcontacts的情况下更改homecontacts,如何将homecontacts的值复制到workcontacts,并将其引用到新指针,而不共享相同的值;
先谢谢你
1条答案
按热度按时间qltillow1#
你写道:
这不是一个庞大的副本。。。这只是创建另一个引用
workContacts
指向与homeContacts
列表。您必须创建所有新对象,才能更改一个列表而不影响另一个列表。在contact对象中,可以创建一个重载构造函数,该构造函数将另一个contact作为参数,然后将三个属性复制到新创建的对象。然后您可以正确地复制列表:
然后可以对其中一个进行编辑而不影响另一个。
类似地,在将值填充到家庭联系人时,可以对工作联系人执行完全相同的操作,以便同时填充两个列表。