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