我有一個包,我不能改變的類。這個類不會覆蓋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