我看到一些我无法理解的行为,并且想知道是否有人能够准确地解释这里发生了什么.这是我目前的代码.
public class MyClass {
ArrayList<String> myList = new ArrayList<String>();
public MyClass() {
populate();
removeData(myList);
}
private void populate() {
myList.add("Some data");
myList.add("Some more data");
myList.add("Even more data");
}
private void removeData(ArrayList<String> list) {
ArrayList<String> temp = new ArrayList<String>();
temp = list;
temp.remove("Some data");
}
}
Run Code Online (Sandbox Code Playgroud)
现在由于某种原因,在我运行此代码后,数据将从ArrayList"myList"中删除.即使我只是从方法"removeData"中的变量中删除数据而不是从字段"myList"中删除数据,为什么会发生这种情况?
temp = list;
Run Code Online (Sandbox Code Playgroud)
即使您在方法内部删除,您仍然指向实例成员,因此它可以看到更改.
如果您不想影响实例成员,则需要使用该值创建新列表.
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |