我编写了一个覆盖类 Object 中的 equals(Object) 方法的类,以使用该对象的实例值将该类类型的对象与该类类型的其他对象进行比较。
当我将对象的一个实例作为键放在 HashMap 中,然后在地图上调用 get(Object) 并使用一个新的但相同的对象作为键时,它返回 null。
我尝试将一个新的、相同的对象传递给 equals 方法,它返回 true,所以问题不在于我的比较代码。
根据我通过调试收集的信息,我的对象中的 equals(Object) 方法从未被调用过。
但是,如果您在 HashMap 中使用 String 键,然后将具有相同字符的新实例传递给 get(Object),它会成功返回该值。
为什么会这样?我需要做什么才能让 HashMap 测试键基于我的 equals 方法?