Effective Java 读书笔记第三章

第三章 对于所有通用的方法

      主要讲的是对Object类的非final方法(equals,hashCode,toString,clone和finalize)覆盖的一些规则

1.覆盖equals时请遵守通用约定(item 8)

  1.1 这一个item讲了一些比较抽象的定义,比如自反性,对称性等。不太好理解,感觉执行起来也有一定难度。因为java提供的api中也有几个是违反了这些原则的。我想可能是类似于淘宝之类的大公司才会很严格的执行?没看不知道覆盖equals这么难。难怪文章开头说为了避免这些问题,就不要去覆盖equals。但是,对于一些逻辑相等(logical equality)的比较还是得覆盖的。

  1.2 单例模式的类不用覆盖equals方法

  1.3 这里提到了item16的要复合优先于继承,让equals覆盖不太复杂。比如ColorPoint不是继承Point,而是让Point做为ColorPoint的一个私有域(即私有成员变量),以及一个公有的视图(View,我觉得就是我们平时写的getter方法)

原文地址:https://www.cnblogs.com/baron89/p/2849313.html