gpt4 book ai didi

java - 为什么即使我们将其分配给本地静态访问列表也会更新

转载 作者:行者123 更新时间:2023-12-01 18:42:41 25 4
gpt4 key购买 nike

public static void Method1(String a)
{
List<DataBean> list = new ArrayList<DataBean>();
list = StaticClass.masterList; // it has prepopulated list item


for (JavaBean bean: list) {
//Some condition and we call bean.setters

}

}

为什么这里的 StaticClass.masterList 在 for 循环中更新,尽管我在 bean 上调用了更新?

最佳答案

对列表的引用是您正在复制的内容,并且不会更新。

它引用的对象中可以更新哪些内容。

注意:

List<DataBean> list = new ArrayList<DataBean>();

这里 list 不是 List ,它只是对列表的引用,这就是为什么您可以将其分配给新对象。

如果你想获取 masterList 的浅拷贝,你可以这样做。

List<DataBean> list = new ArrayList<DataBean>(StaticClass.masterList);

这样,如果您更改列表,则不会更改主服务器。但是,如果您更改其中一个 DataBean,这将是可见的。如果您需要深层复制,您可以这样做

List<DataBean> list = new ArrayList<DataBean>();
for (DataBean db: StaticClass.masterList)
list.add(new DataBean(db));

关于java - 为什么即使我们将其分配给本地静态访问列表也会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19250005/

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