Effective Java学习笔记(一) 创建和销毁对象
来源:互联网 发布:老是找不到东西知乎 编辑:程序博客网 时间:2024/04/30 08:47
Effective Java (创建和销毁对象)http://www.cnblogs.com/stephen-liu74/archive/2012/01/13/2228354.html
一、考虑用静态工厂方法代替构造器
public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; }
double num = 0.01BigDecimal num1 = new BigDecimal(num); //num1=0.01000000000000000456161BigDecimal num2 = BigDecimal.valueOf(num);// num2 = 0.01
二、遇到多个构造参数时要考虑用构建器(Builder模式)
多参数用javaBean传参数 ,还是用builder 还需根据实际情况讨论
三、用私有构造器或者枚举类型强化Singleton属性
某种情况下单例和静态方法区别不大
如果要用单例,建议还是用标准的单例模式,初始化的时候带同步
//饿汉式单例类.在类初始化时,已经自行实例化 public class Singleton1 { private Singleton1() {} private static final Singleton1 single = new Singleton1(); //静态工厂方法 public static Singleton1 getInstance() { return single; } }
四、通过私有构造器强化不可实例化的能力
只要实例就报错
public class UtilityClass { //Suppress default constructor for noninstantiability. private UtilityClass() { throw new AssertionError(); } }
五、避免创建不必要的对象
String s = new String("stringette"); String s = "stringette"; Boolean b = Boolean.valueOf("true"); Boolean b = new Boolean("true");
六、消除过期的对象引用
该条目只是推荐在以下3中情形下需要考虑资源手工处理问题:
1) 类是自己管理内存,如例子中的Stack类。
2) 使用对象缓存机制时,需要考虑被从缓存中换出的对象,或是长期不会被访问到的对象。
3) 事件监听器和相关回调。用户经常会在需要时显示的注册,然而却经常会忘记在不用的时候注销这些回调接口实现类。
七、避免使用终结方法
finally finalize
inputStream.close
0 0
- Effective Java学习笔记(一) 创建和销毁对象
- Effective Java学习有感(一)---创建和销毁对象
- Effective Java学习笔记---创建和销毁对象
- Effective Java笔记-创建和销毁对象
- 《Effective Java 2 Edition》学习笔记(一)创建和销毁对象
- Effective Java -->(一)创建和销毁对象
- Effective Java(一) 创建和销毁对象
- Effective Java系列读后感(一)-创建和销毁对象
- Effective Java(一)—— 创建和销毁对象
- 《Effective Java》读书笔记(一)之创建和销毁对象
- Effective Java 读书笔记(一):创建和销毁对象
- effective java 笔记之创建和销毁对象
- effective java 第2章 创建和销毁对象笔记
- Effective Java阅读笔记(一)——第二章 创建和销毁对象
- 学习笔记之Effective Java(1)--创建和销毁对象
- Effective Java(02)创建和销毁对象
- effective java(创建和销毁对象)
- effective java 创建和销毁对象
- java.io.IOException: Too many open files
- [人工智能]人工智能、机器学习和深度学习三者之间的关系
- 用友uap开发报错:流程平台缓存中不存在该单据或交易类型=xxx
- String8StringToInteger
- android 开启service
- Effective Java学习笔记(一) 创建和销毁对象
- android判断用户的 网络类型
- PHP中include()与require()的区别说明
- Android四大组件通信
- 数据结构--叶子问题
- HDU1584蜘蛛牌
- VS2012编译时提示"已经在 LIBCMT.lib(new.obj) 中定义***.lib"解决办法
- 一个简单的程序
- [非旋转Treap 神奇复杂度分析] Hillan模拟赛 D.理性愉悦