オブジェクトitem 04の作成と破壊


インスタンス化を阻止するにはprivateジェネレータを使用します。


静的メソッドと静的フィールドのみを含むクラスを作成した場合、抽象クラスとして作成してもインスタンス化を阻止することはできません.
-->サブクラスを作成してインスタンス化するだけです.そのため、継承して使う意味と誤解される可能性があります.
また、ジェネレータを作成しない場合、コンパイラはデフォルトのジェネレータ(パラメータのない共通ジェネレータ)を自動的に作成するので、インスタンスを作成できます.

解決策


プライベートジェネレータを明示的に作成します.
public class UtilityClass {
    // 기본 생성자가 만들어지는 것을 막는다(인스턴스화 방지용).
    private UtilityClass() {
        throw new AssertionError();
    }

    // 나머지 코드는 생략
}
AssertionErrorを投げ出す必要はありませんが、クラスでジェネレータを誤って呼び出すと、プライベートジェネレータであるため継承を阻止するエラーが発生する可能性があります.
ジェネレータが提供されているが、使用できないため、直感的ではありません.したがって,最も前のコードのように,適切な注釈を加える.
継承の場合、明示的であれ暗黙的であれ、親クラスのジェネレータを呼び出す必要がありますが、呼び出しはプライベートでブロックされます.