首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
[读书笔记]Effective Java 第三章
时间:
2016-04-02 13:39:38
阅读:
227
评论:
0
收藏:
0
[点我收藏+]
标签:
覆盖equals方法时请遵守通用约定
这种说法的大意是要说明,Object类中定义的很多默认准则是被许多工具类或是第三方框架共同遵守的标准,一旦改动这样的标准机制,会在后续的使用中产生不稳定因素。equals方法常见用来做以下用途时,不建议对equals方法进行覆盖:
1.判断实例的唯一性
2.提供某种程度的逻辑相等
equals方法满足自反性,对称性,传递性,一致性,非空性。当需要覆盖equals方法时,需要注意以下三点:
1.覆盖equals时总要覆盖hashCode
2.不要企图让equals方法过于智能
3.不要将equals声明中的Object对象替换为其他的类型
覆盖equals方法时总要覆盖hashCode
在每个覆盖了equals方法的类中,也必须覆盖hashCode方法。如果不这样做,就会违反Object.hashCode的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,例如HashMap,HashSet和Hashtable。
始终要覆盖toString
此项大多是为了打印数据时提供必要的关键信息,因为默认的toString方法只会返回类名+@+散列码的无符号十六进制表示。
谨慎地覆盖clone
cloneable接口的目的表示作为对象允许被克隆(clone)。如果一个类实现了Cloneable,Object的clone方法就返回该对象的逐域拷贝。如果你覆盖了非final类中的clone方法,则应该返回一个通过调用super.clone而得到的对象。如果类的所有超类都遵守这条规则,那么调用super.clone最终会调用Object的clone方法。从而创建出正确的实例。如果你决定用线程安全的类实现clone方法,要记得它的clone方法必须得到很好的同步。简而言之,所有实现了Cloneable接口的类都应该用一个公有的方法覆盖clone。此公有方法首先调用super.clone,然后修正任何需要修正的域。
考虑实现Comparable接口
类实现了Comparable接口,就表明它的实例具有内在的排序关系。
[读书笔记]Effective Java 第三章
标签:
原文地址:http://www.cnblogs.com/coder-gosling/p/5347346.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!