gpt4 book ai didi

java,重写和等于

转载 作者:行者123 更新时间:2023-12-01 13:36:10 25 4
gpt4 key购买 nike

好吧,这确实是一个简单的问题,但我不明白为什么我的代码不能正常工作。

在我正在使用的第三方库中,在某个时刻完成了类似的事情:

Object value = someValue;
Object compareValue = someOtherValue;
if(value.equals(compareValue))
// do something

现在,我的对象是同一类的实例,重写等于以下约定:

 @Override
public boolean equals(Object obj) {

jvm 无论如何都会调用对象类定义的 equals,这给了我一个不想要的行为。我怎样才能解决这个问题?我再说一遍,调用代码是一个我无法修改的外部库。

编辑:这是我的类(class)的完整代码:

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,因为我使用了调试器......我使用的 equals 实现是由 netbeans 生成的。

最佳答案

这是一个建筑问题。 Maven 和 Netbeans 的复杂组合发生了一些故障。这意味着我正在调试的代码是一个过时的版本,不包含 equals 方法。

抱歉浪费了您的时间。

关于java,重写和等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com