Java对象值正在更改

Java对象值正在更改,java,Java,我有一个对象A。我将值从A分配给对象B。然后对象A被更改,但我想保持对象B中的原始值 ObjectA a = getObjectAValues(); ObjectB b = new ObjectB(); b.setval(a.getValA()); //object A updated here return b; 当我检查第二个对象时,它具有更新的值,而不是我第一次指定它时的原始值。有什么想法可以克服这个问题吗?Java是,这意味着如果您将ObjectA的一个实例传递到一个对象中,然

我有一个对象A。我将值从A分配给对象B。然后对象A被更改,但我想保持对象B中的原始值

ObjectA a = getObjectAValues();

ObjectB b = new ObjectB();

b.setval(a.getValA());

//object A updated here

return b;
当我检查第二个对象时,它具有更新的值,而不是我第一次指定它时的原始值。有什么想法可以克服这个问题吗?

Java是,这意味着如果您将
ObjectA
的一个实例传递到一个对象中,然后更改该对象的某些状态,它将反映在传入的任何位置,主要是因为引用的值是它在内存中的位置

你怎么修理它?将该值复制到您的对象中,这样您就不会承担更改该值的风险。这可以通过
new
在赋值时调用
ObjectA
的实例来快速完成

public void setval(ObjectA val) {
    this.val = new ObjectA(val.getField1(), val.getField2());
}
Java是,这意味着如果您将
ObjectA
的实例传递到一个对象中,然后更改该对象的某些状态,它将反映在传入的任何位置,这主要是因为引用的值是它在内存中的位置

你怎么修理它?将该值复制到您的对象中,这样您就不会承担更改该值的风险。这可以通过
new
在赋值时调用
ObjectA
的实例来快速完成

public void setval(ObjectA val) {
    this.val = new ObjectA(val.getField1(), val.getField2());
}

如果从
a.getValA()
获得的值是一个对象,那么它将通过引用而不是通过值传递。这意味着它不是原件的副本,而是同一个对象。当您在A中修改它时,您也在B中修改它,因为它只是对同一对象的两个引用


如果你分享更多关于如何构建该对象的详细信息,我可以对其进行更具体的编辑。

如果你从
a.getValA()
获得的值是一个对象,它将通过引用而不是通过值传递。这意味着它不是原件的副本,而是同一个对象。当您在A中修改它时,您也在B中修改它,因为它只是对同一对象的两个引用


如果你分享更多关于该对象是如何构建的细节,我可以将其编辑得更具体。

不是重复-这解释了机制,但实际上没有回答问题。我不确定你想要实现什么,也不确定当前代码有什么问题。当你说“对象A随后被改变”时,你是指
A
的值还是
A.getValA()
(这也令人困惑)?这里没有足够的信息来回答你的问题。每节课看起来像什么?您对
ObjectA
进行了什么样的更改?不是重复-这解释了机制,但实际上并没有回答问题。我不确定您想要实现什么,也不确定当前代码有什么问题。当你说“对象A随后被改变”时,你是指
A
的值还是
A.getValA()
(这也令人困惑)?这里没有足够的信息来回答你的问题。每节课看起来像什么?您正在对
ObjectA
进行什么样的更改?