【Effective Java 10.5】覆盖 equals 时请遵守通用约定 —— 非空性
非空性(Non-Nullity)—— 所有的对象都不能等于 null。
实际上覆写 equals 时不需要显式地检查类型,因为在 instanceof
执行该判断,
public boolean equals(Object o) {
if (!(o instanceof MyType)) {
// 如果 o == null, o instanceof MyType 会直接返回 false
return false;
}
MyType mt = (MyType) o;
// ...
}