ビデオ: 第9回2016年度プログラム言語(Java)ポリモーフィズム・アクセス修飾子 2024
インスタンス化できないJavaクラスを作成したいことがあります。そのようなクラスは、完全に静的なフィールドとメソッドで構成されています。 Java APIの良い例は
Math
クラスです。
そのメソッドは、実際には特定のオブジェクトに関連付けられていないユーティリティ型関数を提供します。あなたは時折、同じようなクラスを作成する必要があります。たとえば、入力データを検証する静的メソッドを持つクラス、またはデータベースからデータを取得するための静的メソッドを持つデータベースアクセスクラスを作成できます。これらのクラスのインスタンスを作成する必要はありません。
<! --1 - >単純なトリックを使用して、誰かがクラスをインスタンス化できないようにすることができます。クラスインスタンスを作成するには、少なくとも1つのパブリックコンストラクタが必要です。あなたのクラスにコンストラクタを提供しないと、Javaは自動的にデフォルトのコンストラクタを挿入します。
クラスインスタンスが作成されないようにするために必要なのは、次のような単一のプライベートコンストラクタを提供することです:
<! public class Validation
private Validation(){} //インスタンスを防ぎます//静的メソッドとフィールドはここに行きます
}
コンストラクタはプライベートなので、クラスはインスタンス化できません。
ちなみに、
Math
クラスは、このテクニックを使用して、そこからインスタンスを作成しないようにします。
Math
クラスのコードの実際のスニペットは次のとおりです:
public final class Math {
/ **
*誰でもこのクラスをインスタンス化できないようにしてください。
* /
private Math(){}
このトリックが
Math
クラスを書いた人にとって十分であれば、おそらく十分です。