gpt4 book ai didi

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

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

我有以下代码,并且在 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/

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