我的 effective java -- 4.通過私有構造器強化不可實例化的能力

4.通過私有化構造器強化不可實例化的能力

 

當編寫的工具類只包換靜態方法和靜態域,並且不希望被實例化,因爲實例對它沒有任何意義。可以通過構造私有化構造器來避免類被實例化。

 

注:

1 企圖將類做成抽象類來強制該類不可被實例化,這是行不通的。該類可以被子類化,並且該子類也可以被實例化。

2 必須使用私有構造器,不能使用顯性構造器或者不包含構造器。(當類不包含顯性構造器時,編譯器會生成缺省的構造器)

3 使用私有化構造器的類不能被子類化。

 

 

public class PrivateConstructor {
	
	private static void outpritName(String name){
		 System.out.println(name);
	}
	
	private PrivateConstructor(){
		//拋出異常,防止被調用或者實例
		throw new AssertionError();
	}
	
	public static void main(String[] args) {
		
		//此處會拋出異常,阻止程序繼續進行
		PrivateConstructor  p = new PrivateConstructor();
		p.outpritName("111");
		
		//直接調用靜態方法
		PrivateConstructor .outpritName("111");
	}
}
 

 


 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章