#privateのコンストラクタでインスタンス化不可能を強制する
ユーティリティクラス(staticのメソッドとstaticのフィールドからなるクラス)はインスタンス化されるようには設計されない。にもかかわらずインスタン化できてしまうものをよく見るので、privateのコンストラクタを使って絶対インスタンス化できないようにしましょう、ってお話。
##用語集
###デフォルトコンストラクタ
コンストラクタを1つも定義していない場合、自動的にデフォルトコンストラクタと呼ばれるコンストラクタが作成される。
##サンプルコード
明示的にprivateなコンストラクタを記述することで、外部からのアクセスを不可能にし、デフォルトコンストラクタの生成も抑止される。
AssertionErrorは厳密には必要ではないけれど、保険として入れている。
//インスタンス化できないユーティリティクラス
public class UtilityClass {
//インスタンス化できないようにするためにデフォルトコンストラクタを抑制する
private UtilityClass() {
throw new AssertionError();
}
… //残りは省略
}
#続く
【Effective Javaを読む】 第2章 項目5 『不必要なオブジェクトの生成を避ける』
https://qiita.com/Natsukii/items/ec64efddce85ffd59fa8