java中的clone对象

时间:2014-09-10 10:41:28

标签: java android

我有一个班级X:

public class X implements Cloneable {
    private int a;
    private int b;

    @Override
    public X clone() throws CloneNotSupportedException {
        return (X) super.clone();
    }
}

我想记住它的初始状态。因此得到他的克隆:

try {
            old = new X();
            old = x.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }

x - 安装了类X,a和b的对象。 例如,我做旧:

old.setA(7)

我现在如何比较旧对象和新对象,找出是否有变化。我这样做但不起作用:

//if object is changed
if (!old.equals(x)){
}

如何检查对象是否已更改?

2 个答案:

答案 0 :(得分:1)

在X类中添加以下代码

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + a;
    result = prime * result + b;
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    X other = (X) obj;
    if (a != other.a)
        return false;
    if (b != other.b)
        return false;
    return true;
}

答案 1 :(得分:0)

public boolean equals(Object object2) {
    return object2 instanceof MyClass && a.equals(((MyClass)object2).a);
}