LoginSignup
1
1

More than 3 years have passed since last update.

Effective Java(第3版) 項目4 privateコンストラクタでインスタンス化不可能を強制する

Posted at

staticメソッド、staticフィールド(定数)だけからなるクラスを各場合、privateコンストラクタを作成し、
インスタンス化を不可能にする、という内容です。

記載内容

具体的なコンストラクタ定義

以下の様なコンストラクタを定義し、クラスの内部からも含めてインスタンス化が出来ないようにするべき。
Java
// インスタンス化できないように、デフォルトコンストラクタを抑制する
private UtilityClass() {
throw new AssertionError();
}

Collectionsの様なインタフェースに対するユーティリティクラス

Java8からは、インタフェースにstaticメソッドを定義可能になっているため、
Collectionインタフェースにメソッドを直接定義可能になっている。

考察

privateコンストラクタは、既に一般化されてテクニックとなっており、特に疑問点等は無いと思います。
Java8からは、インタフェースに関するファクトリメソッドは、インタフェース自体に定義するべきと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1