gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:59:18 24 4
gpt4 key购买 nike

我有一个关于在 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);
}
}

我的问题是:

是否会修改实际的arraylist 对象(从中删除“Test 1”)?我想我已经在某些地方看到过这种情况,但我认为 getter 只是提供了该对象的副本。不是它的引用。如果它确实以这种方式工作(作为引用),那么它是否也能工作(Test 类的 arraylist 对象是否也会因此而改变)?:

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

最佳答案

Java 返回对数组的引用,因此它不会是副本,而是会修改列表。通常,除非它是原始类型(intfloat 等),否则您将获得对该对象的引用。

如果你想返回一个副本,你必须自己显式复制数组。

关于java - 修改 getter 的结果会影响对象本身吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16927810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com