Effective Java 3rd.Edition 翻译
推荐序
前言
致谢
第一章 引言
第二章 创建和销毁对象
第三章 对于所有对象都通用的方法
- 第10项:覆盖equals时请遵守通用约定
- 第11项:覆盖equals时总要覆盖hashCode
- 第12项:始终要覆盖toString
- 第13项:谨慎地覆盖clone
- 第14项:考虑实现Comparable接口
第四章 类和接口
- 第15项:使类和成员的可访问性最小化
- 第16项:要在公有类而非公有域中使用访问方法
- 第17项:使可变性最小化
- 第18项:复合优先于继承
- 第19项:要么设计继承并提供文档说明,要么禁止继承
- 第20项:接口优于抽象类
- 第21项:为后代设计接口
- 第22项:接口只用于定义类型
- 第23项:类层次优于标签类
- 第24项:静态成员类优于非静态成员类
- 第25项:限制源文件为单个顶级类
第五章 泛型
- 第26项:请不要使用原生态类型
- 第27项:消除非受检的警告
- 第28项:列表优于数组
- 第29项:优先考虑泛型
- 第30项:优先考虑泛型方法
- 第31项:利用有限制通配符来提升API的灵活性
- 第32项:谨慎并用泛型和可变参数
- 第33项:优先考虑类型安全的异构容器
第六章 枚举和注解
- 第34项:用enum代替int常量
- 第35项:用实例域代替序数
- 第36项:用EnumSet代替位域
- 第37项:用EnumMap代替序数索引
- 第38项:用接口模拟可扩展的枚举
- 第39项:注解优先于命名模式
- 第40项:坚持使用Override注解
- 第41项:用标记接口定义类型
第七章 Lambda和Stream
- 第42项:Lambda优先于匿名类
- 第43项:方法引用优先于Lambda
- 第44项:坚持使用标准的函数接口
- 第45项:谨慎使用Stream
- 第46项:优先选择Stream中无副作用的函数
- 第47项:Stream要优先用Collection作为返回类型
- 第48项:谨慎使用Stream并行
第八章 方法
- 第49项:检查参数的有效性
- 第50项:必要时进行保护性拷贝
- 第51项:谨慎设计方法签名
- 第52项:慎用重载
- 第53项:慎用可变参数
- 第54项:返回零长度的数组或者集合,而不是null
- 第55项:谨慎返回optinal
- 第56项:为所有导出的API元素编写文档注释
第九章 通用编程
- 第57项:将局部变量的作用域最小化
- 第58项:for-each循环优先于传统的for循环
- 第59项:了解和使用类库
- 第60项:如果需要精确的答案,请避免使用float和double
- 第61项:基本类型优先于装箱基本类型
- 第62项:如果其他类型更适合,则尽量避免使用字符串
- 第63项:了解字符串连接的性能
- 第64项:通过接口引用对象
- 第65项:接口优先于反射机制
- 第66项:谨慎地使用本地方法
- 第67项:谨慎地进行优化
- 第68项:遵守普遍接受的命名惯例
第十章 异常
- 第69项:只针对异常的情况才使用异常
- 第70项:对可恢复的情况使用受检异常,对编程错误使用运行时异常
- 第71项:避免不必要地使用受检异常
- 第72项:优先使用标准的异常
- 第73项:抛出与抽象对应的异常
- 第74项:每个方法抛出的所有异常都要建立文档
- 第75项:在细节消息中包含失败-捕获信息
- 第76项:努力使失败保持原子性
- 第77项:不要忽略异常
第十一章 并发
- 第78项:同步访问共享的可变数据
- 第79项:避免过度同步
- 第80项:executor、task和stream优先于线程
- 第81项:并发工具优先于wait和notify
- 第82项:线程安全性的文档化
- 第83项:慎用延迟初始化
- 第84项:不要依赖于线程调度器
第十二章 序列化
- 第85项:其他方法优先于Java序列化
- 第86项:谨慎地实现Serializable接口
- 第87项:考虑使用自定义的序列化形式
- 第88项:保护性地编写readObject方法
- 第89项:对于实例控制,枚举类型优先于readResolve
- 第90项:考虑用序列化代理代替序列化实例
附录 与第2版中项目的对应关系
参考文献

欢迎关注个人公众号,获取同步更新哈!
Effective Java 3rd.Edition 翻译的更多相关文章
- [Java读书笔记] Effective Java(Third Edition) 第 6 章 枚举和注解
Java支持两种引用类型的特殊用途的系列:一种称为枚举类型(enum type)的类和一种称为注解类型(annotation type)的接口. 第34条:用enum代替int常量 枚举是其合法值由一 ...
- CodePath Android CliffNotes 之 Effective Java for Android 翻译
概述: 这篇文章的目的是作为这篇博文的开源版本,而netcyrax是该指南的原始文章的唯一作者. 请在下面添加您自己的在Android中Java最佳实践.技巧和巧妙! 建造者模式 当你拥有一个需要超过 ...
- [Java读书笔记] Effective Java(Third Edition) 第 7 章 Lambda和Stream
在Java 8中,添加了函数式接口(functional interface),Lambda表达式和方法引用(method reference),使得创建函数对象(function object)变得 ...
- [Java读书笔记] Effective Java(Third Edition) 第 5 章 泛型
第 26 条:请不要使用原生态类型 声明中具有一个或多个类型参数的类或者接口,就是泛型(generic). 例如List接口只有单个类型参数E, 表示列表的元素类型.这个接口全称List<E&g ...
- [Java读书笔记] Effective Java(Third Edition) 第 4 章 类和接口
第 15 条: 使类和成员的可访问性最小化 软件设计基本原则:信息隐藏和封装. 信息隐藏可以有效解耦,使组件可以独立地开发.测试.优化.使用和修改. 经验法则:尽可能地使每个类或者成员不被外界访问 ...
- [Java读书笔记] Effective Java(Third Edition) 第 3 章 对于所有对象都通用的方法
第 10 条:覆盖equals时请遵守通用约定 在不覆盖equals方法下,类的每个实例都只与它自身相等. 类的每个实例本质上都是唯一的. 类不需要提供一个”逻辑相等(logical equality ...
- [Java读书笔记] Effective Java(Third Edition) 第2章 创建和销毁对象
第 1 条:用静态工厂方法代替构造器 对于类而言,获取一个实例的方法,传统是提供一个共有的构造器. 类可以提供一个公有静态工厂方法(static factory method), 它只是一个返回类 ...
- Effective Java, Third Edition
https://github.com/jbloch/effective-java-3e-source-code 网址是 Effetive java的源码 effective-java-3e-sourc ...
- Effective Java Second Edition --- Builder Pattern
如果类的构造器或者静态工厂中有多个参数,设计这种类时,Builder模式是一种不错的选择,特别是当大多数参数是可选的时候. 与使用传统的重载构造函数模式相比,使用Builder模式的客户端代码更易于阅 ...
随机推荐
- Checker Challenge跳棋的挑战(n皇后问题)
Description 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行,每列,每条对角线(包括两条主对角线的所有对角线)上都至多有一个棋子. 列号 0 1 2 3 4 5 6 ...
- 各大IT/IC公司offer比较
1:本人西电通院2013届毕业硕士,根据今年找工作的情况以及身边同学的汇总,总结各大公司的待遇如下,吐血奉献给各位学弟学妹,公司比较全,你想去的公司不在这里面,基本上是无名小公司了:但无名小公司有时也 ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 5 Octave Tutorial—5.5 控制语句: for, while, if 语句
5.5 控制语句: for, while, if 语句 参考视频: 5 - 5 - Control Statements_ for, while, if statements (13 min).mkv ...
- 【HDU5187】zhx's contest
[问题描述] 作为史上最强的刷子之一,zhx的老师让他给学弟(mei)们出n道题.zhx认为第i道题的难度就是i.他想要让这些题目排列起来很漂亮. zhx认为一个漂亮的序列{ai}下列两个条件均需满足 ...
- 【总结整理】Edraw Max亿图图示软件快捷键(转)
Edraw Max亿图图示软件快捷键大全,你想要的都在这了! 用过Edraw Max亿图图示软件的一定知道,亿图是一款功能十分强大的图形图表设计软件.无论是流程图.思维导图.组织结构图.甘特图.网 ...
- InvocationtargetException 类型转换异常
日期类型转换不了json格式数据 json转换数据的时候可以设置某个字段不需要转换 jsonconfig=new JsonConfig() //{} 内传入不需要转换的字段 jsonconfig.se ...
- CSS文本溢出处理
1.超出层的高度和宽度时文本自动隐藏 overflow:hidden;text-overflow:ellipsis; 2.超出层的宽度时隐藏溢出的文本以...表示,Firefox不兼容,只隐藏溢出的文 ...
- 在Ubuntu上源码安装NodeJS
Refer http://nqdeng.github.io/7-days-nodejs/#7.1 前提条件: 确保系统下g++版本(g++ -v)在4.6以上,python版本(python --ve ...
- 3.Dynamic Layout 动态布局。在槽中处理布局
在应用程序中,一个界面的布局基本都是固定的. 在这个实例中,我们把管理布局的代码放在槽中.这样点击一次按钮,触发槽.布局改变一次.这样就成为一个动态布局. (一) 水平和竖直布局改变 横向: 纵向: ...
- 自定义JTabbedPane 标签风格
自定义JTabbedPane 标签风格 2012年03月09日 20:33:12 阅读数:2435 demo 下载地址:http://download.csdn.net/detail/jinannan ...