gpt4 book ai didi

java - 在 Java 中实例化一个新对象会重置该对象其他实例中的所有数据

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:00 24 4
gpt4 key购买 nike

我当前正在处理具有特定类的多个实例的代码。每个实例都会运行某些任务,并收集发送到显示层进行显示的数据。出现的问题是,当创建该类的新实例时,它会重置该类当前存在的所有其他实例。这是一个希望能说明我的观点的例子

Foo instanceFooOne = fooService.performActions(data); 
Foo instanceFooTwo = fooService.performActions(data);

class FooService {
public void performActions(Object data) {
Foo foo = new Foo();
return foo;
}
}

对我来说,这应该有两个单独的 Foo 对象实例,但对于创建的 Foo 对象的所有实例,只有最新版本的 Foo。有什么办法可以避免这种情况发生吗?

最佳答案

您需要保存数据的引用。您当前仅引用“数据”内存,因此所有其他实例都会更改。

Foo instanceFooOne = fooService.performActions(data); 
Foo instanceFooTwo = fooService.performActions(data);

class Foo{
private Object data;
public Foo(Object data) {
this.data = data;
}
public Object getData(){
return data;
}
}

然后使用:

instanceFooOne.getData();

引用格沃尔格的话:

Java is pass-by-value because inside a method you can modify the referenced Object as much as you want but no matter how hard you try you'll never be able to modify the passed variable that will keep referencing the same Object no matter what!

关于java - 在 Java 中实例化一个新对象会重置该对象其他实例中的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26242639/

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