一、背景
對於有些工具類如java.lang.Math、java.util.Arrays等,它們只包含靜態方法和靜態域字段,對於這樣的類實例化沒有什麼任何意義。但在實際使用中,如果不加任何特殊處理,這樣的類還是可以像其他類一樣可以被實例化。
二、處理辦法
將構造函數設置為private,這樣外部類無法實例化該類,同時在這個私有的構造函數中直接拋出異常,從而避免在類的內部實例化。
public class UtilityClass { // 私有的構造器,內部實例化會拋出異常 private UtilityClass() { throw new AssertionError(); } }
三、好處和弊端
這樣定義之後,類在內部和外部都不能被實例化了,否則會發生編譯錯誤或拋出異常,但副作用是這個類將不能被子類化了。
作者:csdn博客 zdp072
查看本欄目