我有一个班级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)){
}
如何检查对象是否已更改?
答案 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);
}