Effective Java学习笔记(一) 创建和销毁对象

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.01
BigDecimal num1 = new BigDecimal(num); //num1=0.01000000000000000456161
BigDecimal 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值