java - 在 Eclipse 中调试 equals() 和 hashCode()

标签 java

我有以下代码,并且在 ContainerBean 的重写 equals()hashCode() 方法上放置了断点。当我在 Debug模式下运行下面的应用程序时,调试器仅针对 System.out.println 行在 hashCode() 处停止,而不是在尝试从 List< 中删除元素时停止

import java.util.ArrayList;
import java.util.List;

public class ListRemovalDriver {

    public static void main(String[] args) {
        List<ContainerBean> remitClaims = new ArrayList<>();

        ContainedBean addedRemit1 = new ContainedBean();
        addedRemit1.setRemitId(12345L);
        ContainerBean added1 = new ContainerBean();
        added1.setRemitBean(addedRemit1);

        remitClaims.add(added1);

        ContainedBean removedRemit1 = new ContainedBean ();
        removedRemit1.setRemitId(12345L);
        ContainerBean removed1 = new ContainerBean ();
        removed1.setRemitBean(removedRemit1);

        System.out.println("List before valid removal" + remitClaims);

        remitClaims.remove(removed1);

        System.out.println("List after valid removal" + remitClaims);



    }
}

我错过了什么吗?

从列表中删除元素时,不会调用 ContainerBean 中重写的 equals() 吗?

编辑

我忘了提及 hashCode()equals() 正在按预期工作,即按照 equals() 逻辑删除元素但它唯一的调试器不会带我去列表删除函数调用。

最佳答案

由于您没有给出代码,我不得不猜测:您没有重写 equals,而是添加了如下重载:

public boolean equals(ContainerBean c) { ... }

这将不起作用,因为调用了 equals(Object)。

更改您的 equals 实现以采用 Object 类型的参数,它将在 eclipse 调试器中被调用并停止。

关于java - 在 Eclipse 中调试 equals() 和 hashCode(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40798602/

相关文章:

java - 参数化测试解决方案

java - java SSLSocketFactory如何在SSL期间从 keystore 选择服务器证书和私钥

java - 不是声明表达式的非法开始?

java - 使用着色器时纹理不渲染?

Java GUI (SWING/AWT) - 空框架 - 组件未显示

java - MongoDB 在空集合上更新很慢

java - 如何在 Java 中获取 HBase 的行键

java - Maven 默认生命周期和插件部分

java - JPA 2.1/Hibernate 5.0 生成模式忽略 inverseJoinColumn 中的 foreignKey 名称

java - 让 Nexus 从没有 .index 文件的存储库下载依赖项