Effective Java 读书笔记:对象创建与优化策略
需积分: 15 75 浏览量
更新于2024-07-22
收藏 92KB DOCX 举报
"Effective Java读书笔记"
Effective Java是Java编程领域的一本经典书籍,由Joshua Bloch撰写,主要探讨了编写高质量Java代码的最佳实践。以下是对书中几个关键知识点的详细解析:
1. 考虑使用静态工厂方法替代构造子
静态工厂方法提供了比构造子更多的灵活性,比如它们可以有命名、不需要每次都创建新对象、返回对象的任何子类以及减少创建带参数对象的复杂度。然而,它们也有缺点,如不能被继承,且与其他静态方法区分度不高。
2. 当面对多个构造参数时,考虑使用Builder模式
Builder模式适用于处理大量构造参数的情况,通过分步骤设置参数,最后构建出对象。这样既保持了构造子的简洁,又简化了客户端代码。但过度使用可能导致代码过于冗长,一般适用于四个或更多参数的情况。
3. 使用私有构造子或者enum类型加强单例属性
单例模式确保一个类只实例化一次,私有构造子是基础。对于序列化,需要声明所有字段为transient并提供readResolve方法。使用enum单例则更为安全,因为它天然支持序列化且不允许多例。
4. 用私有构造子强制不可初始化性
对于只包含静态方法和字段的工具类,应避免实例化。通过添加私有构造子,可以确保类无法被初始化,通常还会配合抛出AssertionError来增强安全性。
5. 避免产生不必要的对象
创建对象是有成本的,特别是在频繁操作时。因此,应尽可能重用对象,比如使用静态成员或缓存已创建的对象。例如,对于不可变对象,可以使用 flyweight 模式或缓存来避免重复创建。
6. 使用枚举代替常量类
枚举不仅提供了一种安全、类型安全的方式来表示一组相关的值,而且比常量类更简洁、更易于使用。枚举可以有方法,也可以实现接口,这使得它们功能强大且灵活。
7. 优先考虑使用final
final关键字用于确保变量不会被重新赋值,提高代码的可预测性和可维护性。特别是对于类和方法,final可以防止子类化和重写,有助于保持设计意图。
8. 尽可能使类和方法不可变
不可变对象在多线程环境下更安全,也更容易理解。创建不可变对象的关键是确保对象一旦被创建,其状态就不能改变。
9. 重写equals()时总要重写hashCode()
当重写equals()方法以进行对象比较时,必须同时重写hashCode()以确保一致性,这对于对象在哈希表中的正确行为至关重要。
10. 推迟初始化
对于不立即需要的属性,可以推迟初始化,直到真正需要时才进行,以提高程序性能。
以上只是Effective Java中部分重要知识点的简述,每一项都值得深入理解和实践,以提升代码质量。通过遵循这些最佳实践,开发者可以编写出更加高效、可维护的Java代码。
2023-03-19 上传
2022-12-16 上传
点击了解资源详情
2018-12-06 上传
eddyx
- 粉丝: 14
- 资源: 2
最新资源
- CAD使用中可能碰到的49种小问题(1-33)
- oracle+SQL语法大全
- principles of model checking
- Java Persistence with Hibernate 2007(英文版)
- flex 和 java项目 整合.pdf
- 流行学习包含等距离映射和局部线性嵌入法
- ARCGIS二次开发实例教程
- zigbee在网络交流的应用
- ArcXML基于INTERNET的空间数据描述语言
- 黑盒测试教程(教你什么叫黑盒测试,系统测试)
- androd设计高级教程
- 交流信号真有效值数字测量方法
- 常用算法设计方法+搜集.doc
- Linux1.0核心游记
- eclips pdf 电子书
- oracle 游标入门