数组列表和修改其中包含的对象
2022-09-01 16:26:36
假设我们有一个ArrayList myArray。我想通过调用对象的函数来修改它。如果我这样做,原始对象是否会被更改?
myArray.get(0).myModyfyingFunction();
为了进一步澄清 - 我担心get()是否真的返回对我的原始对象的引用,或者它是否只返回我原始对象的副本。
假设我们有一个ArrayList myArray。我想通过调用对象的函数来修改它。如果我这样做,原始对象是否会被更改?
myArray.get(0).myModyfyingFunction();
为了进一步澄清 - 我担心get()是否真的返回对我的原始对象的引用,或者它是否只返回我原始对象的副本。
get()
将返回对对象的引用,而不是副本。对返回的引用所做的任何修改都将在对象本身上进行
如果在 ArrayList 中存储任何对象,则不会复制对象,对象中的任何更改都应反映在对象本身中。
例如,我们有类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;
}
}
这是任何其他类的主方法中的代码
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());
这将在 1 之后输出。