从理论上讲,您是正确的:如果您知道您的对象永远不会以任何需要哈希码的方式使用,那么不实现hashCode不会导致任何不好的情况发生。
在实践中,有理由不依赖这一事实:
hashCode话,事情可能会变得很糟糕。equals并且不实施hashCode,那么你几乎肯定会违反合同,hashCode要求它与 保持一致equals。如果您的代码破坏了其他代码所依赖的合同,那么其他代码可能会以意外/奇怪的方式默默地失败。equals,如果您这样做hashCode,同时生成适当的文件就不需要额外的努力。请注意,所有这些都假设您甚至想要实现equals:如果您完全不关心对象的相等性(这实际上很常见,并非每种类型都需要特定的相等性定义),那么您可以直接离开equals 并 hashCode退出您的对象。代码并且都是一致的(尽管您的类型可能与您类型的“直观”相等定义不匹配)。