数组列表和修改其中包含的对象

2022-09-01 16:26:36

假设我们有一个ArrayList myArray。我想通过调用对象的函数来修改它。如果我这样做,原始对象是否会被更改?

myArray.get(0).myModyfyingFunction();

为了进一步澄清 - 我担心get()是否真的返回对我的原始对象的引用,或者它是否只返回我原始对象的副本。


答案 1

get()将返回对对象的引用,而不是副本。对返回的引用所做的任何修改都将在对象本身上进行


答案 2

如果在 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 之后输出。