我正在传递回调方法(列表a),我想知道如何复制该值。
List<addresses> mInstanceList;
public void setMyList(List<Address> addresses)
{
mInstanceList = addresses; // is this going to work?
}
答案 0 :(得分:4)
mInstanceList=new Arraylist(addresses);
之类的操作
答案 1 :(得分:1)
您正在复制对地址指向 mInstanceList 的列表的引用。如果其他人更改了该列表的元素,它将反映在 mInstanceList 中。 如果您不想这样,您可以创建一个新列表(可能是一个ArrayList)并以相同的顺序复制地址列表的内容。
mInstanceList = new ArrayList<Address>();
for (Address a: addresses) {
mInstanceList.add(a);
}
答案 2 :(得分:0)
1。如果要复制列表并将其分配给具有自己副本的列表引用变量,请使用Copy Constructor
。
<强>例如强>
ArrayList<Address> list1 = new ArrayList<Address>();
ArrayList<Address> list2 = new ArrayList<Address>(list2);
对list1引用的ArrayList对象所做的更改不会反映到list2引用的ArrayList对象中,因为它们都指向堆上的2个不同的ArrayList对象。
2。如果您只想指向堆上同一对象的List Reference Variable,请执行此操作。
ArrayList<Address> list1 = new ArrayList<Address>();
ArrayList<Address> list2 = list1 ;
由于现在引用list1和list2都指向堆上的同一个ArrayList对象,因此一个更改将反映在另一个上。