Ing*_*ngo 2 java language-agnostic
是否存在标准元算法或如何为由其他类组成的类实现hashCode()方法的最佳实践:
class A { B b; C c;  ... }
如果我们假设B和C在实现它们的hashCode()方面付出了一些努力,那么将As和hashcode建立在B和的基础上当然是个好主意C.但如何最好地结合它们呢?
我问这个是因为某些操作显然不适合像:
class Naive {
   B b1, b2;
   public int hashCode() { return b1.hashCode() ^ b2.hashCode(); }
}
这会导致每个Naive对象的哈希码为0,恰好有两个相等的B对象.
这是一种常见的模式,一些Eclipse插件能够生成:
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((b1 == null) ? 0 : b1.hashCode());
    result = prime * result + ((b2 == null) ? 0 : b2.hashCode());
    // repeat for other attributes you want to include...
    return result;
}
别忘了相应地编写equals()方法代码......
| 归档时间: | 
 | 
| 查看次数: | 436 次 | 
| 最近记录: |