我有一个包,我不能改变的类。这个类不会覆盖Object.equals()并且具有不同的equals实现会使我的代码更加清晰。正确的方式来扩展一个类,所以我可以覆盖等于()
我知道我不能做到这一点:
MyClass extends OtherClass{
@Override
public boolean equals(MyClass that)
{
//compare members and other stuff here
}
}
OtherClass oc1 = new OtherClass();
OtherClass oc2 = new OtherClass();
oc1.equals(oc2); //false because of Object.equals
//I want to do something like the following
MyClass mc1 = (MyClass) oc1; //throws class cast exception
MyClass mc2 = (MyClass) oc2; //throws class cast exception
mc1.equals(mc2); //true
什么是实现这一目标的正确方法?
我可以写一个像equals(OtherClass oc1,OtherClass oc2)的方法,但是这个方法不太实用。如果我可以实现平等,我可以利用List.contains或Sets来管理我的数据并使生活更轻松。
和equals()将比较,为正确的数据? – Freiheit 2010-12-17 20:26:49
@Freiheit是的,'equals'会做你编程的任何事情。 – 2010-12-17 20:27:54
-1 - 用于实现没有hashCode的equals。 – 2010-12-17 21:34:31