java beginner-是一个arraylist通过引用调用

时间:2012-05-26 13:55:41

标签: java arraylist

在java程序中,我希望通过调用单个函数来修改3个arraylist变量。

我是否认为如果我将这3个arraylists作为参数传递给该函数,那么我可以在函数中修改所有3个吗?或者我是否必须在单独的函数中修改每个arraylist,并将该数组列表指定为返回值,以确保它被修改。

3 个答案:

答案 0 :(得分:8)

  

我是否认为如果我将这3个arraylists作为参数传递给该函数,那么我可以在函数中修改所有3个吗?

总之,是的。

值得注意的是,问题标题中的“引用”术语并不完全正确。在Java中,所有内容都按值传递,包括对象引用。事实上,三个ArrayList参数是引用本身,这使得对列表所做的任何更改都会传播回调用者。

答案 1 :(得分:0)

是的,您可以将3 ArrayList s作为参数传递给方法。他们被视为任何其他对象。

至于是否要返回另一个ArrayList,这很大程度上取决于该方法必须做什么。

答案 2 :(得分:0)

以下代码的作用类似于“按引用调用”:

package arrayList;

import java.util.ArrayList;

public class CallByValueReference {

class myObject {
    String str;

    public myObject(String str) {
        super();
        this.str = str;
    }

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    @Override
    public String toString() {
        return "myObject [str=" + str + "]";
    }   
}

ArrayList<myObject> strArray = new ArrayList<myObject>();

public static void main(String[] args) {
    new CallByValueReference().test();
}

private void test() {
    strArray.add(new myObject("entry1") );
    System.out.println(strArray);
    strArray.get(0).setStr("entry2");
    System.out.println(strArray);
}
}

输出结果为:

[myObject [str=entry1]]
[myObject [str=entry2]]