effecitve java 4 singleton 2

  1. 在java中的工具类是不希望被实例化的,像java.lang.Math 或者 java.util.Arrays
  2. 不可以故意将一个类设计成抽象类来说明他不可以被实例化,这样子会诱导使用者觉得它是用来继承的,但是继承的子类又是可以实例化的。
  3. 好的做法是将构造器私有化,这样子话一来这个类不可以直接实例化,二来这个类也不可以被继承
    public class StrongAbilityTest {
        private StrongAbilityTest(){
            throw new AssertionError();
        }
    }
    
    class StrongSon extends StrongAbilityTest{
        
    }
    
  4. 如果使用了这种方式,那么就会有种感觉说这个构造函数是专门设计用来不被调用的一样,最好是用一行注释说明一下
    public class StrongAbilityTest {
        // 为了保证这个类不被实例化
        private StrongAbilityTest(){
            throw new AssertionError();
        }
    }
    

     

  5.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值