整理Effective Java書中Item 4: Enforce noninstantiability with a private constructor心得筆記

主旨

本篇在開門見山說了使用私有建構子來防止物件被實例化。

劃重點

主要概念很簡單,你在設計一個Utils class,

  1. 請將constructor設為private。
  2. 並在被實例化時(constructor被執行時)拋出錯誤。

關於這點sonarQube也有提出相同的建議Utility classes should not have public constructors,的確這類型的class實例化沒有意義的,為了防止它被誤用,也能防止被子類別調用super();被實例化。

public class CryptoUtils {

    private CryptoUtils() {
        throw new IllegalStateException("Utility class");
    }

    public static String md5(String content, String key) {
        ...
    }
}

參考延伸閱讀: