Java对象引用

时间:2015-03-02 03:29:57

标签: java object

我有课,里面有代码:

MyClass x= value1;
MyClass y= value2;

void change (MyClass x,y) {
 MyClass temporary= x;
 x=y;
 y=temp;
}

我的问题是为什么我的对象不会改变它们的值(在运行此方法之前x和y将指向值)?以及如何改变它们?

1 个答案:

答案 0 :(得分:3)

对象不会更改其值,因为您的代码不会更改对象的值。它交换引用,它们已复制到参数xy中,这些参数是change方法的本地参数。

如果你想让对象交换它们的值,给它们一个方法来获取和设置它们可能代表的任何值。代码如下所示:

void change (MyClass x,y) {
    MyClass temporary= new MyClass();
    temporary.copyFrom(x);
    x.copyFrom(y);
    y.copyTo(temporary);
}

copyTo是您添加的方法,用于复制MyClass的内部状态。这是一个小例子:

class MyClass {
    private String firstName;
    private String lastName;
    public MyClass(String first, String last) {
        firstName = first;
        lastName = last;
    }
    public void CopyFrom(MyClass other) {
        firstName = other.firstName;
        lastName = other.lastName;
    }
}