ok Это действительно простой вопрос, но я не могу понять, почему мой код не работает должным образом.java, overriding и equals
В третьей части библиотеки я использую, в определенный момент что-то вроде этого сделано:
Object value = someValue;
Object compareValue = someOtherValue;
if(value.equals(compareValue))
// do something
теперь, мои объекты являются экземплярами одного и того же класса, что переопределение равно со следующим контрактом:
@Override
public boolean equals(Object obj) {
jvm в любом случае вызывает равные значения, определенные классом объектов, что дает мне нежелательное поведение. Как я могу это исправить? Повторяю, что вызывающий код является внешней библиотекой, которую я не могу изменить.
редактировать: это полный код моего класса:
public class MissionPriorityResolutionCriteria implements ResolutionCriteria {
private Satellite prioritySatellite;
public MissionPriorityResolutionCriteria(Satellite prioritySatellite) {
this.prioritySatellite = prioritySatellite;
}
@Override
public int hashCode() {
int hash = 5;
hash = 53 * hash + (this.prioritySatellite != null ? this.prioritySatellite.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final MissionPriorityResolutionCriteria other = (MissionPriorityResolutionCriteria) obj;
if (this.prioritySatellite != other.prioritySatellite && (this.prioritySatellite == null || !this.prioritySatellite.equals(other.prioritySatellite))) {
return false;
}
return true;
}
public Satellite getPrioritySatellite() {
return prioritySatellite;
}
public void setPrioritySatellite(Satellite prioritySatellite) {
this.prioritySatellite = prioritySatellite;
}
public boolean apply(SRASolution s) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
Я знаю, что он звонит в Object.equals, потому что я вышел с отладчиком ... Равных реализации я использую генерируемых netbeans.
Если вы правильно переопределили, этого не может быть. – Kayaman
Пожалуйста, поделитесь своей реализацией equals ... – Frank
http://stackoverflow.com/questions/27581/overriding-equals-and-hashcode-in-java У вас есть чрезмерный урон? –