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