我的情况很奇怪。我有一个有几个成员的类,如下所示:
public class myMainClass
{
public aClass myObject = new aClass();
private int numberOfUpdates = 0;
public anotheClass.memberClass anotherObject = new anotheClass.memberClass();
请注意,anotherClass
中定义了一个类。 (不确定这是否会成为我遇到的问题)。
aClass
和 anotheClass.memberClass
都有一个同名的成员 ThisMember
。
我在 myMainClass
中还有一个方法,可以对 myMainClass
对象的成员进行一些修改:
public void Update(double aPassedInNumber)
{
anotherObject.ThisMember = aPassedInNumber;
//etc
}
我仅修改该一名成员。但是,当我这样做时,myObject.ThisMember
也被修改为相同的值!就好像(??)两个成员变量在内存中占据相同的位置。或者说其中一个在某种程度上是对另一个的引用。
就好像我已经完成了:
public void Update(double aPassedInNumber)
{
anotherObject.ThisMember = aPassedInNumber;
myObject = aPassedInNumber;
//etc
}
但我不是。我只做了第一个赋值,但这些变量两个都被修改了。
我已经追踪了这一点并打印出了诊断信息并使用了监 window 口,它清楚地修改了这两个变量。
怎么会这样呢?我究竟做错了什么?我该如何修复它?
最佳答案
哦,伙计。看来我还是没有掌握JAVA中的引用概念。该变量确实只是对另一个对象的引用。
现在看来我必须为该类实现一个复制方法。
啊啊!!
关于java - 一个变量破坏另一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20392845/