最近比较闲,就打算找点时间把一直没看的Effective Java第二版给看了,为了督促自己看完,同时为了加深记忆,决定写篇读书笔记,其实也就是记一下里面提到的各项建议,将来回顾时比较方便。
1,用静态工厂方法代替构造函数。静态工厂方法的好处是
1.1 静态工厂方法有名字,你可以很容易的决定选择哪个方法,而不是像用构造函数一样需要根据参数列表来选择
1.2 静态工厂方法不一定需要创建对象,可以使用预先缓存的对象,
1.3 静态工厂方法可以返回指定返回类型的任意的子类型,可以在未来修改实现而不需要修改方法签名
1.4 减少创建泛型实例的复杂度
静态工厂方法的缺点是
1.5 如果你不提供public或者protected的构造函数,这个类就不能被继承
1.6 不易跟其他的静态方法区分开来,当然可以通过valueOf, getInstance这类的命名来使静态工厂方法显眼一些。
2,如果构造函数的可选参数很多,考虑使用builder模式,这种模式模拟了Python里的命名参数,简单说就是在类里只有私有的构造函数,然后再创建一个公有静态内部类,命名为Builder或者其他的, 然后用builder来创建这个类的实例。
3,用私有构造函数或者enum来创建单例。创建单例有几种方法:
3.1 private的构造函数,public static final的一个field,指向本类的实例,调用者直接引用这个field。
3.2 把上面说的field改成rpivate的,增加一个getInstance方法返回这个field。
3.3 创建一个只有一个元素的enum,这是创建单例的最好方法。
如果这个单例是可序列化的,必须要注意改写readSolve方法。
4,只有私有的构造函数,让类不可以被实例化,对工具类比较有用。
5,避免创建不必要的对象,比如不要new一个String,尽量避免auto box/unbox。但是也不要矫枉过正,该创建的对象还是要创建,也不要给什么对象都搞个对象池。这条正好和第39条相对,本条是“当可以使用已有的对象时就不要创建新的对象”,而第39条是“当需要创建新对象时,千万不要重用已有的对象”。
6,消除废弃的对象引用,java虽然不用操心内存回收,但是也可能会有内存泄漏的,对于自己管理内存的类,要当心内存泄漏,还有就是缓存里的对象,以及监听器和回调函数等。
7,避免使用finalize函数,gc的执行是无法保证的,尽量通过try...finally来回收资源,如果实在要使用finalize函数,要记得显式调用父类的finalize方法。
分享到:
相关推荐
"Effective Java读书笔记" Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展...
《Effective Java》是Java开发领域的经典著作,作者Joshua Bloch深入浅出地阐述了编写高效、健壮的Java代码的技巧和最佳实践。以下是对该书部分内容的详细解释: 1. **产生和销毁对象** - Item1:静态工厂方法相比...
Effective Java 读书笔记 - 枚举与注解 本文总结了Effective Java 中关于枚举与注解的知识点,涵盖了枚举类型的优点、使用指南、避免使用 int 常量、使用 EnumSet 和 EnumMap 等。 枚举类型的优点 枚举类型提供了...
《Effective Java》是Java...以上仅是《Effective Java》一书中部分核心知识点的概述,实际的读书笔记中会更详细地解释这些概念,并给出具体的示例代码。通过深入学习和实践,开发者可以极大地提升其Java编程的水平。
读书笔记:Effective Java中文版第3版笔记
### Effective Java读书笔记(上) #### 第一章 引言 本书主要针对Java开发者提供了大量实用的编程指导建议,帮助读者提升代码质量和程序性能。在本章节中,我们将重点介绍对象的创建与销毁,以及一些重要的设计...
读书笔记:Effective Java中文版学习项目
读书笔记:Effective Java中文版第二版示例、笔记
读书笔记:Effective Java中文版 第2版
读书笔记:Java练习包括《Java编程思想》《算法》《Effective Java》等
读书笔记:Effective Java中文版第二版示例代码
读书笔记:Effective Java 中文版(2版和3版)
读书笔记:读Effective Java中文版第3版阅读源码测试案列
读书笔记:Effective Java 中文版(第2版)总结 (美)Joshua Bloch 著
读书笔记:Effective.Java中文版(第3版)
安卓艺术开发探索读书笔记,EffectiveJava读书笔记. 收集各大神博客以及安卓笔记,安卓面试笔记等方便手机端查看. 更新说明 v2.2.2 1.增加了一些最近在学习比较好的安卓大神的博客. 2.增加了来自GeniusVJR整理的安卓...
《BookReading:读书笔记》项目是一个专注于Java编程的个人学习资源库,旨在帮助开发者通过阅读和整理书籍来提升自己的技术能力。在这个项目中,你将找到一系列与Java相关的读书笔记,这些笔记涵盖了从基础概念到高级...
java软件笔试题 my notebook 我的笔记本,大部分是在大二大三的时候写的笔记,对于已经毕业的来说可能比较基础甚至naive。...7:读书笔记 thinking in java effective java Android开发艺术探索 Android插件化开发指南
loveincode's notes 学习工作中的一些记录,收藏。 操作系统 , 编译原理 , 计算机网络 , 互联网协议... 常用数据结构与算法 Java 实现 数据结构 与 排序算法 ...读书笔记 Effective Java , HTTP权威指南 , Java
作者HotBitmapGG,源码StudyProject,一款 Material Design 风格的 AndroidRank 干货学习客户端,需要...安卓艺术开发探索读书笔记,EffectiveJava 读书笔记. 收集各大神博客以及安卓笔记,安卓面试笔记等方便手机端查看.