《Effective Java》笔记(一)
来源:互联网 发布:gsm是什么网络 编辑:程序博客网 时间:2024/06/08 16:41
第2章 创建和销毁对象
第1条:用静态工厂方法代替构造器
优势:
可以有名称更易于阅读;
不必再每次调用他们的时候都创建一个行的对象;
可以返回原返回类型的任何子类型的对象;
在创建参数化类型实例的时候,他们是代码变得更加简洁;
缺点:
类如果不含public或者protected的构造器,就不能被子类化;
他们与其他静态方法实际上没有任何区别;
第2条:遇到多个构造器参数时考虑使用builder
优势:
提高代码的可读性;
保证创建对象的不可变的安全性;
可扩展性;
缺点:
略微增加开销;
第3条:用私有构造器或者枚举类型强化Singleton属性
完美单例实现方式:
public class Singleton { private Singleton() { } public static Singleton getInstance() { return SingletonBuilder.mSingleton; } private static class SingletonBuilder { private static final Singleton mSingleton = new Singleton(); }}
第4条:通过私有构造器强化不可实例化的能力
即所谓的工具类,不需要创建实例,仅仅使用静态方法。
public class Util { private Util() { //反射保护 throw new RuntimeException("this class can't be instantiated"); }}
第5条:避免创建不必要的对象
不必考虑“小”对象,仅当创建一个对象的代价非常昂贵时才避免重复创建。
1.适时使用成员变量代替局部变量
假设一个方法经常被调用,并且在方法体内会创建“不变”的局部变量,这种情况则可以将这些局部变量变为成员变量,并在适当的时候初始化。
2.使用对象池
但要注意只有非常重量级的对象才有必要使用对象池!
缺点:维护复杂,增加内存占用,损害性能。
第6条:消除过期的对象引用
当一个对象不再使用时,及时清除引用,否则会导致内存泄露。
特别注意一下三种情况:
类是自己管理内存时,如集合的存储对象;
容易被遗忘的缓存;
监听和回调,设置监听,却没有显式的取消注册,则listener对象会一直被持有引用。可以采用弱应用来保存listener;
第7条:避免使用终结方法(finalizer)
0 0
- 《Effective Java》笔记(一)
- effective java 学习笔记(一)
- Effective Java 笔记(一)
- Effective Java 笔记(一)
- effective java 笔记(一)
- Effective Java学习笔记一
- Effective Java笔记(一)
- 《Effective Java》笔记(一)
- Effective Java笔记(一)
- Effective Java 学习笔记(一)
- effective Java 学习笔记 (一)
- effective Java 学习笔记 (一)
- 《Effective Java》阅读笔记(一)
- Effective java 学习笔记(一)
- Effective Java 学习笔记(一)
- 《effective java》学习笔记(一)
- effective C++笔记(一)
- effective c++笔记(一)
- 通过html来部分显示字符串,并用…显示
- 一篇很好的阿里竞赛的博文总结
- 双十一即将来临,实体店如何实现“新零售”?
- phper的博客
- 【TC SRM701】PartisanGame(博弈+循环节)
- 《Effective Java》笔记(一)
- Spring中使用AspectJ指示器
- POJ 1952 BUY LOW, BUY LOWER
- Rxjava(Subject)-PublishSubject--代码分析
- Robotium-环境搭建
- Shiro自定义Realms
- Android——android与JavaScript交互,告别WebView。
- C#42课主要内容
- leetcode_最长回文串Longest Palindromic Substring