Effective Java 读书笔记
创建和销毁对象
》考虑用静态工厂方法替代构造器。
优点:
●优势在于有名称。
●不必再每次调用他们的时候都创建一个新的对象。
●可以返回原返回类型的任何子类型的对象。
●在创建参数化类型实例的时候,他们使代码更加简洁。
缺点:
●类如果不含公有的或者受保护的构造器。就不能被子类化。
●他们与其他的静态方法没有任何区别。
》遇到多个构造器参数的时候考虑用构建器。
》用私有的构造器或者枚举类型强化Singleton属性。
》通过私有构造器强化不可实例化的能力。
》避免创建不必要的对象
反面的例子
String s = new String("s");// do not this
●每次执行的时候都会创建一个新的实例。
改版
String s= "s";
●只有一个String实例。
》消除过期的对象引用。
●一旦对象引用已经过期,只需要清空这些引用即可。
●清空对象引用应该是一种例外,而不是一种规范的行为。
●只要是类自己管理内存,就应该警惕内存泄漏问题。
》避免使用终结方法
●终结方法(finalizer)是不可预测的,也是很危险的。一般的情况下是不必要的。
对所有对象都通用的方法
》覆盖equals时请遵守通用约定。
●类的每个实例本质上都是唯一的。
●不关心类是否提供了逻辑相等的测试功能。
●超类已经覆盖了Equals,从超类继承过来的行为对于子类也是合适的。
●类是私有的或是包私有的,可以确定他的equals方法永远不会被调用,这时,要覆盖,防止被意外的调用。
●自反性。
●对称性。
●传递性。
●一致性。
类和接口
》使类与成员的可访问性最小化。
》在公有类中使用访问方法而非公有域。
》复合优先于继承。
》接口优于抽象类。
●现有的类可以很容易被更新,以实现新的接口。
》接口只用于定义类型。
●常量接口模式是对接口的不良使用。
》要尽可能的消除非受检警告。
》列表优先于数组。
●数组使具体化的,只有在运行的时候才知道并检查谈们的元素约束类型。
》优先考虑泛型
》38:检查参数的有效性
》39:必要时进行保护性拷贝。
》40:谨慎设计方法签名。
● 谨慎的选择方法的名字。
● 不要过于追求过于简便的方法。
● 避免过长的参数列表(4个或更少)
减少参数的方法:
分解成多个方法
创建辅助类
采用builder模式。
● 对于参数类型,要优先使用接口而不是类。
》41:慎用重载
》42:慎用可变参数
》43:返回0长度的数组或者集合,而不是返回null。
》44:为所有导出的API元素编写文档注释。
第八章 通用程序设计
》将局部变量的作用域最小化。
● 最有利的方法就是在第一次使用它的地方声明。
》for-each优先于for循环
》了解和使用类库
》如果需要精确的答案,避免使用double与float。
》
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
Effective Java 读书笔记的更多相关文章
- Effective Java读书笔记完结啦
Effective Java是一本经典的书, 很实用的Java进阶读物, 提供了各个方面的best practices. 最近终于做完了Effective Java的读书笔记, 发布出来与大家共享. ...
- Effective java读书笔记
2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己 计在16年要看12本书,主要涉及java基础.Spring研究.java并发.J ...
- Effective Java 读书笔记(一):使用静态工厂方法代替构造器
这是Effective Java第2章提出的第一条建议: 考虑用静态工厂方法代替构造器 此处的静态工厂方法并不是设计模式,主要指static修饰的静态方法,关于static的说明可以参考之前的博文&l ...
- Effective Java 读书笔记之九 并发
一.访问共享的可变数据时要同步 1.synchronized关键字既然保证访问的可见性也能保证原子性.而volatile修饰符只能保证变量的线程可见性. 2.增量操作符等不是原子性,多线程操作时可能导 ...
- Effective Java 读书笔记之七 通用程序设计
一.将局部变量的作用域最小化 1.在第一次使用变量的地方声明 2.几乎每个变量的声明都应该包含一个初始化表达式:try-catch语句是一个例外 3.使方法小而集中是一个好的策略 二.for-each ...
- Effective Java 读书笔记之一 创建和销毁对象
一.考虑用静态工厂方法代替构造器 这里的静态工厂方法是指类中使用public static 修饰的方法,和设计模式的工厂方法模式没有任何关系.相对于使用共有的构造器来创建对象,静态工厂方法有几大优势: ...
- [Effective Java读书笔记] 第二章 创建和销毁对象(1~7)
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3537576.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- Effective Java读书笔记——第三章 对于全部对象都通用的方法
第8条:覆盖equals时请遵守通用的约定 设计Object类的目的就是用来覆盖的,它全部的非final方法都是用来被覆盖的(equals.hashcode.clone.finalize)都有通用约定 ...
- Effective Java 读书笔记(五):Lambda和Stream
1 Lamdba优于匿名内部类 (1)DEMO1 匿名内部类:过时 Collections.sort(words, new Comparator<String>() { public in ...
- Effective Java 读书笔记(四):泛型
1 不要使用原始类型 (1)术语 术语 例子 参数化类型(Parameterized type) List<String> 实际类型参数(Actual type parameter) St ...
随机推荐
- 深入理解:JavaScript原型与继承
深入理解:JavaScript原型与继承 看过不少书籍,不少文章,对于原型与继承的说明基本上让人不明觉厉,特别是对于习惯了面向对象编程的人来说更难理解,这里我就给大家说说我的理解. 首先JavaScr ...
- windows 下配置 nginx的问题
1.存放nginx的目录最好是英文目录,如果存放到中文目录下启动时有问题: 未完,待续...
- kindeditor-在线编辑器
写在前面的话: 今天是第一次写博客,很值得纪念,希望能够和大神们一起交流技术,一起进步...来自<一只有梦想的前端小白> 最近项目中需要实现图文混排的效果,所以研究了下在线编辑器-- ki ...
- [IOS]《A Swift Tour》翻译(一)
以下翻译内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3768936.html 碎碎念... Swift是苹果在WWDC刚发 ...
- 【ios】使用Block对POST异步操作的简单封装
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3409721.html 一般情况下的POST异步操作需要实现以下 ...
- IOS开发证书显示“此证书的签发者无效”解决方法
今天早上同事说咱们的证书无法使用了,显示“此证书的签发者无效”.一开始以为谁误操作了证书,查看后发现所有证书都无效了.查了会才发下原来是Apple Worldwide Developer Relati ...
- Android常用设计模式(二)
Android常用设计模式之观察者模式 观察者设计模式在Android应用中会经常用到,模式原理类似于这样的场景: 用户订报纸,然后在报社登记,报社来统计用户(添加用户),用户也可以取消订阅,报社删除 ...
- java文件复制函数
在写代码中,经常会需要复制文件.这时候就可以把这些函数放到工具类里面. 下面是一个复制文件的函数: public class CopyFileUtil { private static String ...
- Getting Started with ASP.NET Web API 2 (C#)
By Mike Wasson|last updated May 28, 2015 7556 of 8454 people found this helpful Print Download Com ...
- MySQL 系列(五) 多实例、高可用生产环境实战
MySQL 系列(五) 多实例.高可用生产环境实战 第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 史上最屌.你不知道的数据库操作 第三 ...