文档章节

《Effective java》学习笔记 2 之 对于所有对象都通用的方法

厚德
 厚德
发布于 2015/06/17 11:43
字数 421
阅读 12
收藏 0

1.覆盖equals时请遵守通用约定

要覆盖equals就必须遵循以下约定

1 自反性

对于非空对象x x.equals(x)为true。(基本都满足)

2 对称性

对于非空对象x y. 若x.equals(y) 返回true,则y.equals(x) 一定返回true

3 传递性

对于非空对象x y z 。 若 x.equals(y), y.equals(z) 都返回true,则一定有x.equals(z) 返回true

4 一致性

对于不可变对象来说,如果两个对象相等,则永远相等。可变对象就不一定了。设计类是的时候就要考虑到它是否可变,不可变就必须遵循一致性。

5 非空性

对于非空对象x x.equals(null)都必须返回false

2.在覆盖equals时总要覆盖hashCode方法

对于覆盖hashcode也有约定:

1 在应用程序的执行期间,只要对象的equals方法的比较操作作用到的信息没有发生改变,那么对同一个对象多次调用,hashCode返回码必须是同一个整数。

2 如果两个对象根据equals方法比较相等,那么调用这两个对象任意一个对象的hashCode方法都必须产生同样的整数结果。

3 始终要覆盖toString ,toString覆盖起来没有太多的约定。

4 谨慎覆盖clone ,调用clone方法是不会调用构造器的。 其他的没理解清楚,不写了。

5 考虑实现Comparable接口,实现此接口可以在部分集合中完成排序的功能,compareTo也应该有 equals的传递性。


© 著作权归作者所有

共有 人打赏支持
厚德
粉丝 2
博文 53
码字总数 33193
作品 0
武汉
Effective Java 第三版——43.方法引用优于lambda表达式

Tips 《Effective Java, Third Edition》一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8...

M104
05/22
0
0
通过JDBC进行简单的增删改查(以MySQL为例)

前言:什么是JDBC 一、准备工作(一):MySQL安装配置和基础学习 二、准备工作(二):下载数据库对应的jar包并导入 三、JDBC基本操作 (1)定义记录的类(可选) (2)连接的获取 (3)insert (4...

Airship
2015/07/13
0
0
Java程序员应了解的10个面向对象设计原则

面向对象设计原则是 OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数 Java 程序员追逐像 Singleton、Decorator、Observer 这样的设计模式,而不重...

effort_fan
2012/04/09
0
0
Java程序员应当知道的10个面向对象设计原则

面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) 、 Decorator(装饰器)、Observer(观察者) 等设计模式,而没有把足够多的注意力放在学习面向对象的...

银月光海
2015/03/16
0
0
Java拾遗:001 - 重写 equals 和 hashCode 方法

重写equals方法 在Java中Object类是一个具体类,但它设计的主要目的是为了扩展,所以它的所有非final方法,都被设计成可覆盖(override)的。但任何一个子类在覆盖这些方法时都应遵守一些通用...

一别丶经年
08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

腾讯投资最高1.75亿美元正式进军菲律宾移动支付市场

菲律宾长途电话公司(PLDT)公司今日宣布,中国互联网巨头腾讯和私募股权公司KKR将获得该公司旗下金融科技公司Voyager Innovations的少数股权。 PLDT在一份声明中称:“腾讯和KKR最多将分别收...

linuxCool
21分钟前
2
0
正则介绍及grep/egrep用法

10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data 正则介绍 正则就是一串有规律的字符...

hhpuppy
32分钟前
1
0
J2Cache 中使用 Lettuce 替代 Jedis 管理 Redis 连接

一直以来 J2Cache 都是使用 Jedis 连接 Redis 服务的。Jedis 是一个很老牌的 Redis 的 Java 开发包,使用很稳定,作者维护很勤勉,社区上能搜到的文章也非常非常多。算是使用范围最广的 Redi...

红薯
今天
12
0
一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部