【发布时间】:2015-07-23 15:41:59
【问题描述】:
我不确定我是否做对了,但我的类中有一个方法,在该方法中我创建了一个类的实例来保存数据,因为某些切换。但是,当我从某个地方调用它时:
public static void otherClassMethod(MyClass myClass) {
MyClass m = myClass.doStuff(); // 1
}
public class MyClass {
private Item myItem;
private int mCount;
public void add(Item item) {
if (mCount == 0) {
myItem = item;
myItem.setNext(null); // 2
mCount++;
} else {
....
}
}
public MyClass doStuff() {
if (mCount == 0) return null;
MyClass m = new MyClass();
Item i = myItem;
do {
m.add(i); // 3
i = i.getNext(); // 4
} while (i != null);
return m;
}
}
在 (4) 中,它更改了 (3) 中的 m 和 (1) 中的 myClass 的变量 (2),为什么还要更改 (1)? 我不知道我到底在这里没有得到什么,你能给我一个提示吗? 谢谢。
【问题讨论】:
-
您正在修改每个方法中对一个对象的相同引用,它指向内存中的相同位置。当您将其分配给另一个变量时,您不会得到一个新对象。