学习effective java-8对所有对象共同的方法之覆写equals方法时请遵从一般规约
来源:互联网 发布:照片拼贴软件 java 编辑:程序博客网 时间:2024/05/16 06:32
背景
Ojbect的equals方法代表的是引用是否引用的同一对象的相等性测试。
在以下情况下,Object的equals方法是不必覆写的:
ü 类的每个实例都是独一无二的。比如说线程,线程代表的是活动实体而不是值。此时Object的equals方法足以是满足该要求的。
ü 当用户并不关心逻辑是上的相等性的时候,可以不覆写equals方法。比如说一般情况下,当两个学生有相同的名字和学号时,我们都会认为是同一个人,但是有的人就认为这是两个不同的学生,那么就必要覆写equals方法。
ü 当父类的equals方法足够满足子类的比较时,就不需要覆写equals方法。比如Set的大部份实现类都继承调用了AbstractSet中的equals方法。
ü 如果类是私有的或者package-private的话,并且确认这些不会用来测试相等性的时候,就必须覆写equals方法,如下:
@Override public boolean equals(Object o) {
throw new AssertionError(); // Method is never called
}
何时覆写equals?
当两个对象有逻辑上的相等的时候。大部分都是针对类中的属性来进行相等性比较的。
Object的equals方法的特性
对于Object的equals方法的特性,请查看Java SE的文档,上面说的几条规则很清楚,必须遵守。
覆写equals的注意
1.覆写的equals方法是否满足:对称性、传递性、一致性。
2.覆写了equals方法的同时,一定要覆写hashCode()。
3.这样写public boolean equals(MyObject obj){}是错误的,这代表的是重载,而不是覆写。里面的参数类型不一样。所以必须这样public boolean equals(Object obj){}才正确。
- 学习effective java-8对所有对象共同的方法之覆写equals方法时请遵从一般规约
- 学习effective java-9对所有对象共同的方法之覆写equals方法时请同时覆写hashCode
- 学习effective java-11对所有对象共同的方法之覆写clone方法时请慎重考虑
- 学习effective java-10对所有对象共同的方法之覆写toString方法
- 学习effective java-12对所有对象共同的方法之考虑实现Comparable
- Effective Java读书笔记、感悟——2.1对所有对象都通用的方法之equals
- Effective Java之对所有对象通用的方法
- effective java之对所有对象都通用的方法
- Effective Java-2 对所有对象都通用的方法
- Effective Java——对所有对象通用的方法
- JAVA学习之Object类-equals方法的覆写
- Effective Java 对于所用对象都通用的方法 8.覆盖equals时请遵守通用约定.txt
- 第8条 对于所有对象都通用的方法——覆盖equals时请遵守通用约定
- 8. 【对于所有对象都通用的方法】如何正确覆写equals方法
- [Effective Java]第三章 对所有对象都通用的方法
- JAVA学习之类的equals方法覆写
- Effective Java:对于所有的对象都通用的方法
- effective java(对于所有对象都通用的方法)
- CSS,JS文件压缩工具
- android 2.3 GPS 移植实战 二
- 在Mac OS X中配置Apache + PHP + MySQL
- 使用hbase自带工具测试读写速率
- 第12周报告回文数判断
- 学习effective java-8对所有对象共同的方法之覆写equals方法时请遵从一般规约
- 微软历史——.NET
- .net中简单而实用的类
- 从binlog恢复数据及Mysqlbinlog文件删除
- 输出100--10000之间的回文数
- 写文件操作
- uImage生成过程
- 第12周报告2-2(改进版)
- 希望以此(黑马)为跳板