Pri*_*alj 23 java arraylist pass-by-reference
假设我们有一个ArrayList myArray.我想通过调用它的函数来修改一个对象.如果我这样做,原始对象是否会被更改?
myArray.get(0).myModyfyingFunction();
Run Code Online (Sandbox Code Playgroud)
为了进一步澄清 - 我担心get()实际上是返回对原始对象的引用还是只返回原始对象的副本.
Ósc*_*pez 61
get()将返回对象的引用,永远不会复制.您对返回的引用所做的任何修改都将在对象本身上进行
如果在ArrayList中存储任何对象,则不会复制Object,并且对象中的任何更改都应反映在对象本身中.
例如,我们有类NewClass
public class NewClass {
private String mystring="";
/**
* @return the mystring
*/
public String getMystring() {
return mystring;
}
/**
* @param mystring the mystring to set
*/
public void setMystring(String mystring) {
this.mystring = mystring;
}
Run Code Online (Sandbox Code Playgroud)
}
这是任何其他类的main方法中的代码
List<NewClass> newclasses = new ArrayList<NewClass>();
NewClass class1 = new NewClass();
class1.setMystring("before1");
NewClass class2 = new NewClass();
class2.setMystring("before2");
newclasses.add(class1);
newclasses.add(class2);
newclasses.get(0).setMystring("after1");
System.out.println(class1.getMystring());
Run Code Online (Sandbox Code Playgroud)
这将输出after1.
| 归档时间: |
|
| 查看次数: |
48995 次 |
| 最近记录: |