5

在 Effective Java Item 9 (Always override hashCodewhen you override equals) 中说

Java 平台库中的许多类,例如 String、Integer 和 Date,在它们的规范中包含由它们的 hashCode 方法返回的确切值作为实例值的函数。这通常不是一个好主意,因为它严重限制了您在未来版本中改进散列函数的能力。

这是什么意思 ?

4

1 回答 1

4

这意味着您无法在更高版本的代码中重写散列函数以获得更好的散列属性。例如,String.hashCode()功能很快……但不是很好。但它不能再改变了,因为哈希码是指定的,人们已经在他们自己的代码中依赖于那个实现。

于 2012-12-10T18:25:13.187 回答