通过私有构造器强化不可实例化的能力

你可能需要编写只包含静态方法和静态域的类。
这样的工具类不希望被实例化,实例化对他没有任何意义。

(企图通过将类做成抽象类来强制该类不可被实例化,这是行不通的)

工具类(util)就是一类不该被实例化类的代表。它们只是提供一些实用功能,实例化之是毫无意义的。

demo:

 

  1. // Noninstantiable utility class  
  2. public class UtilityClass {  
  3.     // Suppress default constructor for noninstantiability  
  4.     private UtilityClass() {  
  5.         throw new AssertionError();  
  6.     }  
  7. }  

 

这种惯用法的副作用:它使得一个类不能被子类化。所有的构造器都必须显示或隐式的调用超类构造器。在这种情形下子类就没有可访问的超类构造器可调用了。

猜你喜欢

转载自windpoplar.iteye.com/blog/2315909
今日推荐