是的,可以这样做。但这不允许您将对象放入HashMap,HashSet等中。这是因为标准集合类期望关键对象提供
equals和
hashCode方法。(这就是他们设计工作的方式…)
备择方案:
实现一个包装器类,该包装器类包含真实类的实例,并提供其自己的
equals
和实现hashCode
。实现自己的基于哈希表的类,这些类可以使用“可哈希”对象来提供等于和哈希码功能。
咬一下子弹,在相关类上实现
equals
并hashCode
覆盖。
实际上,第三个选项可能是最好的,因为您的代码库很可能 需要
使用一致的概念来表示这些对象相等。还有其他一些事情表明您的代码需要大修。例如,它当前正在使用对象数组而不是Set实现来表示显然是集合的事实。
另一方面,当前的实现可能有一些真实的(或想象中的)性能原因;例如减少内存使用。在这种情况下,您可能应该编写一堆辅助方法来执行诸如将2个表示为数组的集合连接在一起的操作。



