为了在Java中获得对象的哈希代码,我们使用hashCode()
方法。
要访问Java中的(私有(字段,标准情况下,我们需要根据方法执行的操作类型,使用get
或set
作为前缀的单独方法。那么,为什么hashCode方法会有所不同呢?
方法hashCode()
是在第一个Java版本中引入的,即正式版本1.0。
getXXX()
和setXXX()
范式后来被建立为JavaBeans标准的一部分。JavaBeans通过从getter/setter对派生属性来定义一个简单但非常有用的组件模型。JavaBeans是在JDK 1.1中引入的。
因此hashCode()
早于getter/setter范式。
最终:冲突的范式。
请记住,像hashCode()
这样的方法或多或少从第0天起就与java结合在一起了。当时,并没有一个既定的标准建议:分别使用getters。一个明确的";方法应命名为doWhatever()
";。
一旦发布,将其重命名为更合适的computeHashcode()
或类似的名称将破坏所有现有的源代码。
换句话说:还有一种使用非常短的方法名称的心态,例如Collections接口中的size()
。