没有合适的资源?快使用搜索试试~ 我知道了~
Effective Java第三版1
4星 · 超过85%的资源 需积分: 0 114 下载量 90 浏览量
2022-08-08
21:43:07
上传
评论 6
收藏 570KB DOCX 举报
温馨提示
试读
393页
《Effective Java》第三版中文版目录 第一章 介绍 1 第二章 创建和销毁对象 4 1 考虑用静态工厂方法替换构造器 4 2 当遇到多个构造器参
资源详情
资源评论
资源推荐
《Effective Java》第三版中文版
目录
第一章 介绍 ............................................................................................................................................1
第二章 创建和销毁对象 ........................................................................................................................4
1 考虑用静态工厂方法替换构造器..............................................................................................4
2 当遇到多个构造器参数时考虑用构建器(建造者)替换...........................................................7
3 用私有构造器或者枚举类型强化单例属性............................................................................18
4 通过私有构造器强化不可实例化的能力................................................................................21
5 依赖注入优先硬连接资源 @ ................................................................................................22
6 避免创建不必要的对象............................................................................................................24
8 避免使用终结方法和清理器....................................................................................................30
9 try-with-resources 优先 try-finally @....................................................................................35
第三章 对所有对象都通用的方法 ......................................................................................................37
10 覆写 equals 时候遵守通用规定.............................................................................................37
11 覆写 equals 时候总要覆写 hashCode ................................................................................53
12 始终覆写 toString...................................................................................................................56
13 小心覆写 clone.......................................................................................................................58
14 考虑实现 Comparable 接口..................................................................................................64
第四章 类和接口 ..................................................................................................................................70
15 使类和成员可见性最小...........................................................................................................70
16 公有类中使用访问方法而非公有域 .....................................................................................73
17 使可变性最小 .........................................................................................................................75
18 组合优于继承 .........................................................................................................................82
19 要么为继承而设计并提供文档,要么禁止继承 .................................................................88
20 接口优于抽象类 .....................................................................................................................93
21 为后代设计接口 @ ...............................................................................................................97
22 接口只用于定义类型 .............................................................................................................99
23 类继承优于标签类 ...............................................................................................................101
24 优先考虑静态类而不是非静态.............................................................................................105
25 将源文件限制为单个顶级类@ ...........................................................................................107
第五章 泛型 ........................................................................................................................................109
26 不要使用原生类型 ...............................................................................................................110
27 消除未检查警告 ...................................................................................................................115
28 list 列表优于数组..................................................................................................................118
29 优先考虑泛型 .......................................................................................................................122
30 优先考虑泛型方法 ...............................................................................................................127
31 使用有界通配符提升 API 的灵活性...................................................................................131
32 小心组合泛型和可变参数 @ ............................................................................................138
33 优先考虑类型安全的异构容器 ...........................................................................................143
第六章 枚举和注解 ............................................................................................................................148
34 用枚举 enum 代替 int 常量 ..................................................................................................148
35 用实例域代替序数 ...............................................................................................................161
36 用 EnumSet 代替 Bit 位域 ..................................................................................................163
37 用 EnumMap 代替序数索引 ...............................................................................................164
38 用接口模拟可扩展的枚举 ...................................................................................................172
39 注解优于命名模式 ...............................................................................................................176
40 统一使用 Override 注解 ......................................................................................................187
41 用标记接口定义类型 ...........................................................................................................191
第七章 Lambdas 表达式 and 流 Streams ..........................................................................................193
42 Lambda 表达式优于匿名类 .................................................................................................194
43 方法引用优于 Lambda 表达式 ..........................................................................................200
44 优先使用标准的函数式接口...............................................................................................203
45 小心使用流...........................................................................................................................209
46 流中优先使用无副作用的函数...........................................................................................220
47 返回类型流优先 Collection ................................................................................................229
48 当创建并行流的时候小心些...............................................................................................238
第八章 方法 ........................................................................................................................................244
49 检查参数的有效性 ...............................................................................................................244
50 需要时进行保护性拷贝 .......................................................................................................250
51 小心设计方法签名 ...............................................................................................................257
52 谨慎使用重载 .......................................................................................................................260
53 谨慎可变参数 .......................................................................................................................270
54 返回空集合或者数组,而不是 null ....................................................................................273
55 谨慎返回 Optionals @ ......................................................................................................277
56 为所有导出的 API 元素写文档注释...................................................................................284
第九章 通用程序设计 ........................................................................................................................296
57 最小化局部变量作用域 .......................................................................................................296
58 for each 优于传统 for 循环 .................................................................................................300
59 了解和使用类库 ...................................................................................................................305
60 如果需要精确答案,避免使用 float 和 double................................................................310
61 基本类型优于装箱类型 .......................................................................................................314
62 如果其他类型更合适,避免使用 String ............................................................................318
63 小心 String 连接性能...........................................................................................................323
64 通过接口引用对象 ...............................................................................................................324
65 接口优于反射 .......................................................................................................................327
66 谨慎使用本地方法 ...............................................................................................................332
67 谨慎优化 ...............................................................................................................................334
68 遵守普遍的命名规范 ...........................................................................................................339
第十章 异常 ........................................................................................................................................344
69 只针对异常情况才使用异常 ...............................................................................................345
70 对可恢复的情况使用受检异常,对编程错误使用运行时异常 .......................................349
71 避免不必要使用受检异常 ...................................................................................................352
72 优先使用标准异常 ...............................................................................................................355
73 抛出与抽象对应的异常 .......................................................................................................359
74 每个方法抛出异常要有文档 ...............................................................................................362
75 在细节信息中包含捕获失败的信息 ...................................................................................364
76 努力使失败保持原子性 .......................................................................................................368
77 不要忽略异常 .......................................................................................................................370
第十一章 并发 ....................................................................................................................................372
78 同步访问共享可变数据 .......................................................................................................372
79 避免过度同步 .......................................................................................................................380
80 executors,task,stream 优于线程 @ ...........................................................................390
81 并发工具优于 wait 和 notify................................................................................................393
82 线程安全文档化 ...................................................................................................................401
83 慎用延迟初始化 ...................................................................................................................406
84 不要依赖线程调度器 ...........................................................................................................411
第十二章 序列化 ................................................................................................................................414
85 考虑其他可选择优于 Java 序列化 @..............................................................................414
86 考虑使用自定义序列化形式 ...............................................................................................420
87 谨慎实现 Serializable 接口.................................................................................................425
88 保护性编写 readObject 方法..............................................................................................436
89 对于实例控制,枚举优于 readResolve ............................................................................445
90 考虑序列化代理替换序列化实例 ......................................................................................452
1
第一章 介绍
本书旨在帮助您有效地使用 Java 编程。
语言及其基本库:Java.Lang.java. UTL 和 ANDJavaIO,以及子包,如
asjav.UTI.CONCURTANTANCE 和 JavaUTILL 函数。其他图书馆也会不时
讨论。这本书由九十个项目组成,每一个项目都传达一条规则。规则管理实
践通常被最优秀和经验最丰富的程序员认为是有益的。这些项目被松散地分
为 11 章,每章涵盖软件设计的一个广泛方面。这本书并不打算从头到尾地
阅读:每一项或多或少都是独立的。这些项目被大量引用,因此你可以很容
易地在书中绘制出你自己的路线。
自从这本书的最后一版出版以来,许多新的特点被添加到了这个平台上。这
本书的大部分内容都在某种程度上使用了这些特性。此表显示了关键功能的
主要覆盖范围:
Feature 特征
Items 条目
Release 发行版
Lambdas
Items42–44
Java 8
Streams
Items45–48
Java 8
Optionals
Item55
Java 8
Defaultmethodsininterfaces
Item21
Java 8
try-with-resources
Item9
Java 7
@SafeVarargs
Item32
Java 7
Modules
Item15
Java 9
大多数项目都用程序示例进行说明。这本书的一个主要特点是它包含了说
明许多设计模式和习惯用法的代码示例。在适当的情况下,它们与本领域的标
准参考工作交叉引用[Gamma95]。
许多项目包含一个或多个程序示例,说明一些需要避免的实践。这样的例子,
有时被称为反模式,用注释清晰地标记,例如//neverdothis!.在每种情况下,
该项都解释了示例不好的原因,并建议使用另一种方法。
这本书不是针对初学者的:它假设你已经适应了 Java。如果你没有,请考虑
许多很好的介绍性文章中的一篇,比如 Sestoft'sjava(Sestoft16)。虽然有效
的 Javais 设计为任何一个有语言工作知识的人都能接触到,但它应该为思想提
剩余392页未读,继续阅读
申增浩
- 粉丝: 18
- 资源: 297
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1