我目前正在处理具有特定类的多个实例的代码。每个实例都运行某些任务,并收集发送到显示层以供显示的数据。发生的问题是,当创建类的新实例时,它会重置当前存在的该类的所有其他实例。这是一个有希望说明我的观点的例子
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。有没有办法不发生这种情况?
答案 0 :(得分:1)
您需要保存数据引用。您当前仅为“数据”引用内存,因此所有其他实例都将更改。
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();
引用Gevorg:
Java是pass-by-value,因为在方法中你可以修改 尽可能多地引用Object但无论你怎么努力 你将永远无法修改将保留的传递变量 无论如何都引用同一个对象!