package cn.xf.cp.ch02.item8.transitivity; public class Point { private final int x; private final int y; public Point(int x, int y) { this.x = x; this.y = y; } @Override public boolean equals(Object obj) { if(!(obj instanceof Point)) { return false;…
重写equals方法看起来似乎很简单,但是有许多重写方式会导致错误,而且后果非常严重.最容易避免这类问题的办法就是不覆盖equals方法,在这种情况下,类的每个实例都只能与它自身相等.如果满足了以下任何一个条件,那就是正确的做法: 类的每个实例都是唯一的. 对于代表活动实体而不是值(value)的类来说确实如此,例如Thread.Object提供的equals实现对这些类具有完全正确的行为(The equals implementation provided by Object has ex…
0 正确的equals方法 public class MyClass { // 主要属性1 private int primaryAttr1; // 主要属性2 private int primaryAttr2; // 可选属性 private int optionalAttr; // 延迟加载,缓存散列码 private volatile int hashCode = 0; @Override public int hashCode() { if(hashCode == 0) { int …