修改getter的结果会影响对象本身吗?

Jor*_*s10 20 java arraylist getter-setter

我有一个关于在java中使用getter方法的问题.假设我有这个课程:

class Test {
    private ArrayList<String> array = new ArrayList<String>();

    public ArrayList getArray() {
        return this.array;
    }

    public void initArray() {
        array.add("Test 1");
        array.add("Test 2");
    }
}

class Start {
    public static void main(String args[]) {
        initArray();
        getArray().remove(0);
    }
} 
Run Code Online (Sandbox Code Playgroud)

我的问题是:

是否会修改实际的arraylist对象(从中删除"Test 1")?我想我已经在某些地方看过这个,但我认为吸气剂只是提供了该物体的副本.不是对它的引用.如果它确实以这种方式工作(作为参考),那么这也会起作用(类Test的arraylist对象也会被这个改变)吗?:

class Start {
    public static void main(String args[]) {
        initArray();
        ArrayList aVar = getArray();
        aVar.remove(0);
    }
} 
Run Code Online (Sandbox Code Playgroud)

gre*_*dha 26

Java返回对Array的引用,因此它不是副本,它将修改List.通常,除非它是基本类型(int,float等),否则您将获得对该对象的引用.

如果要返回重复项,则必须自己显式复制数组.