我有一个 HashMap 并以下列方式使用:
HashMap<SomeInterface, UniqueObject> m_map;
UniqueObject getUniqueObject(SomeInterface keyObject)
{
if (m_map.containsKey(keyObject))
{
return m_map.get(keyObject);
}
else
{
return makeUniqueObjectFor(keyObject);
}
}
我的问题是我看到多个不同类的对象与 m_map.containsKey(keyObject) 上的相同键匹配。
所以这是我的问题:
这可能吗?Map 接口说它使用 equals() 来比较键是否为空。在我的任何 SomeInterface 类中,我都没有覆盖 equals() 。这是否意味着 equals 方法可能是错误的?
如果上述情况属实,如果它们实际上是同一个对象而不是副本,我如何让 HashMap 仅在 equals() 上返回 true?这可以通过说 if (object1 == object2) 来实现吗?我在 Java 开发的早期就被告知我应该避免这样做,但我从来没有发现什么时候应该使用它。
提前致谢。:)