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