Effective Java 读书笔记----第三章

本文主要介绍了覆盖equals方法时应遵循的通用约定,包括自反性和对称性等概念,并探讨了单例模式类是否需要覆盖equals方法的问题,以及推荐使用组合而非继承的设计模式来简化equals方法的覆盖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

      主要讲的是对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/archive/2013/01/07/2849313.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值