一、目录介绍
序
前言
第1章 引言 1
第2章 创建和销毁对象 4
第1条 考虑用静态工厂方法代替构造函数 4
第2条 使用私有构造函娄强化singleton属性 8
第3条 通过私有构造函数强化不可实例化的能力 10
第4条 避免创建重复的对象 11
第5条 消除过期的对象引用 14
第6条 避免使用终结函数 17
第3章 对于所有对象都通用的方法 21
第7条 在改写equals的时候请遵守通用约定 21
第8条 改写equals时总是要改写hashCode 31
第9条 总是要改写toString 36
第10条 谨慎地改写clone 39
第11条 考虑实现Comparable接口 46
第4章 类和接口 51
第12条 使类和成员的可访问能力最小化 51
第13条 支持非可变性 55
第14条 复合优先于继承 62
第15条 要么专门为继承而设计,并给出文档说明,要么禁止继承 67
第16条 接口优于抽象类 72
第17条 接口只是被用于定义类型 76
第18条 优先考虑静态成员类 78
第5章 C语言结构的替代 82
第19条 用类代替结构 82
第20条 用类层次来代替联合 84
第21条 用类开代替enum结构 88
第22条 用类和接口来代替函数指针 97
第6章 方法 100
第23条 检查参数的有效性 100
第24条 需要时使用保护性拷贝 103
第25条 谨慎设计方法的原型 107
第26条 谨慎地使用重载 109
第27条 返回零长度的数组而不是null 114
第28条 为所有导出的API元素编写文档注释 116
第7章 通用程序设计 120
第29条 将局部变量的作用域最小化 120
第30条 了解和使用库 123
第31条 如果要求精确的答案,请避免使用float和double 127
第32条 如果其他娄型更适合,则尽量避免使用字符串 129
第33条 了解字符串连接的性能 131
第34条 通过接口引用对象 132
第35条 接口优先于映像机制 134
第36条 谨慎地使用本地方法 137
第37条 谨慎地进行优化 138
第38条 遵守普遍接受的命名惯例 141
第8章 异常 144
第39条 只针对不正常的条件才使用异常 144
第40条 对于可恢复的条件使用被检查的异常,对于程序错误使用运行时异常 147
第41条 避免不必要地使用被检查的异常 149
第42条 尽量使用标准的异常 151
第43条 抛出的异常要适合于相应的抽象 153
第44条 每个方法抛出的异常都要有文档 155
第45条 在细节消息中包含失败——捕获信息 157
第46条 努力使失败保持原子性 159
第47条 不要忽略异常 161
第9章 线程 162
第48条 对共享可变数据的同步访问 162
第49条 避免过多的同步 168
第50条 永远不要在循环的外面调用wait 173
第51条 不要依赖于线程调度器 175
第52条 线程安全性的文档化 178
第53条 避免使用线程组 181
第10章 序列化 182
第54条 谨慎地实现Serializable 182
第55条 考虑使用自定义的序列化形式 187
第56条 保护性地编写readObject方法 193
第57条 必要时提供一个readResolve方法 199
中英文术语对照 202
参考文献 207
模式和习惯用法索引 212
索引 214
��