【问题标题】:One variable clobbers another一个变量破坏另一个变量
【发布时间】:2013-12-21 23:18:37
【问题描述】:

我的情况很奇怪。我有一个有几个成员的类,如下所示:

public class myMainClass
{
    public aClass myObject = new aClass();
    private int numberOfUpdates = 0;
    public anotheClass.memberClass anotherObject = new anotheClass.memberClass();

请注意,anotherClass 在其中定义了一个类。 (不确定这是否会导致我遇到的问题)。

aClassanotheClass.memberClass 都有一个同名成员 ThisMember

我在myMainClass 中还有一个方法,它对myMainClass 对象的成员进行了一些修改:

public void Update(double aPassedInNumber)
{
    anotherObject.ThisMember  = aPassedInNumber;
    //etc
}

修改了那个成员。但是,当我这样做时,myObject.ThisMember also 会被修改为相同的值!就好像 (??) 两个成员变量在内存中占据相同的位置。或者那个在某种程度上是对另一个的引用。

好像我已经完成了:

public void Update(double aPassedInNumber)
{
    anotherObject.ThisMember = aPassedInNumber;
    myObject  =  aPassedInNumber;
    //etc
}

但我不是。我只进行了第一次赋值,但两个变量都被修改了。

我已经对此进行了跟踪并打印了诊断信息并使用了监视窗口,它清楚地修改了这两个变量。

怎么可能?我究竟做错了什么?我该如何解决?

【问题讨论】:

  • 您能否发布一个完整的工作示例,并告诉我们这是什么语言?
  • 其中一个成员是静态的吗?

标签: java variables


【解决方案1】:

哦,伙计。看起来我仍然没有处理 JAVA 中的参考概念。那个变量确实只是对另一个对象的引用。

现在看来我必须为该类实现一个复制方法。

啊啊!!

【讨论】:

  • 您的问题解决了吗?请发布您的解决方案并接受答案作为解决方案!
猜你喜欢
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多