java,重写和等于

标签 java equals overriding

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

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

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/

相关文章:

java - LIKE 中的单引号进入 JDBC 准备语句

inheritance - 是否有在 UML 静态类图中显示重写方法的约定?

java - 我如何调用父类(super class)的重写方法?

python - django makemigrations 覆盖以创建具有自定义名称的迁移文件

java - 从 DAO 类中的单个列表中的两个查询获取结果

java - 如果 Kubernetes 上存在多个 pod,则从单个 pod 运行 Spring 中的 Scheduled Cron 方法

java - 如何通过 Java 代码中的 SpEL 表达式选择 Tomcat context.xml 参数

java - 覆盖等于检查类类型或原始 int

.net - 如何比较两个日期时间

c++ - 如何查看一个字符是否等于一个新行