この記事では主に Java 静的ファクトリ メソッドの詳細な説明に関する関連情報を紹介します。この記事を通じて、今日から Java ファクトリ メソッドをマスターできることを願っています。必要な方は
Java 静的ファクトリ メソッドの詳細な例を参照してください。
静的ファクトリメソッドとは
クラスの場合、ユーザーがそれ自体のインスタンスを取得するために、最も一般的な方法はパブリックコンストラクターを提供することです。
もちろん、ここで紹介したいのは別のメソッドです。それは、クラスのインスタンスを返す静的メソッドである静的ファクトリー メソッドです。
たとえば、基本型 boolean をカプセル化されたクラスに変換する Boolean のメソッド、valueOf:
public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); }
静的ファクトリ メソッドを使用する理由
それでは、なぜ静的ファクトリ メソッドを使用するのでしょうか。なぜコンストラクターを使用しないのでしょうか?
静的ファクトリ メソッドには、名前付き、環境に優しい、複数の子という 3 つの特性があるため、以下でそれぞれについて説明します。
> 名前付き静的ファクトリメソッドには名前があります
> 環境に優しい
public final class Boolean implements java.io.Serializable, Comparable<Boolean> { /** * The {@code Boolean} object corresponding to the primitive * value {@code true}. */ public static final Boolean TRUE = new Boolean(true); /** * The {@code Boolean} object corresponding to the primitive * value {@code false}. */ public static final Boolean FALSE = new Boolean(false); ... }
> 複数のサブタイプは、元の戻り値の型の任意のサブタイプのオブジェクトを返すことができます
EnumSet の noneof メソッドを例に挙げます。
/** * Creates an empty enum set with the specified element type. * * @param elementType the class object of the element type for this enum * set * @throws NullPointerException if <tt>elementType</tt> is null */ public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) { Enum[] universe = getUniverse(elementType); if (universe == null) throw new ClassCastException(elementType + " not an enum"); if (universe.length <= 64) return new RegularEnumSet<>(elementType, universe); else return new JumboEnumSet<>(elementType, universe); }パフォーマンス上の理由から、返される特定の型は列挙型の数によって決まります。64 を超える場合は JumboEnumSet を返し、それ以外の場合は RegularEnumSet を返します。これら 2 つのタイプはユーザーには表示されません。ユーザーは、これらが EnumSet であることだけを認識する必要があります。 それは、静的ファクトリ メソッドがコンストラクターよりも優れているためです。クラスを作成するとき、最初に行うべきはパブリック コンストラクターを提供することではなく、静的ファクトリ メソッドを優先する必要があります。
一般的な静的ファクトリ メソッド名
getInstance - 事前に作成されたインスタンスを返します
newInstance - 新しいインスタンスを返します
静的ファクトリメソッドはファクトリパターンではないでしょうか?
この記事で説明する静的ファクトリ メソッドは、ファクトリ パターンと同様にコンストラクターを置き換えるために使用されるメソッドであり、どちらも上記の 3 つの利点 (名前付け、環境保護、複数の子) を備えています。
概要
以上がJava での静的ファクトリ メソッドの使用方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。