factory (プリミティブ)
パッケージ: CURL.LANGUAGE.COMPILER

シグネチャ

{factory [access] [modifier-list] {factory-name [arg-list]}:return-type
code-body
},

クラス

access:
アクセス属性です。有効な属性は publiclibrarypackageprotected および private です。access を指定しないと、アクセス属性は既定で package になります。
アクセス属性は、クラスのインスタンス作成をコントロールします。
modifier-list: 修飾子のリスト (省略可能)。ファクトリーの有効な修飾子は、implicitinline、および deprecated です。複数の修飾子を指定する場合は、各修飾子をスペースで区切ります。
factory-name: ファクトリーの名前です。有効な Curl 識別子を作成するには、Curl メソッドの命名規則を使用することを推奨します。小文字のみを使用してください。ファクトリー名に複数の単語が含まれる場合は、ハイフンで区切ります。

名前 default は特別な意味を持ちます。コンストラクタ名を指定しないでクラスを作成すると、インスタンスの作成に default ファクトリーが起動します。
arg-list: ファクトリーの引数のリスト。リストされた引数または残余引数を指定できます。指定可能な引数のフォーマットは、位置フォーマットまたはキーワード フォーマットです。引数の指定を区切るにはカンマを使用します。
return-types: ファクトリーが返す値のデータ型です。ファクトリーは 1 つの戻り値を持つことが必要です。戻り値のデータ型は、ファクトリーを含むクラスまたはそのクラスのサブクラスでなければなりません。
code-body: ファクトリーの本体です。code-body はコード ブロックです。インスタンスを作成して適切に初期化するために、1 つまたは複数の Curl 式で構成されます。インスタンスの初期化には constructor を呼び出します。

コードは必ず、return-type の値を 1 つ返さなければなりません。

説明

ファクトリーはクラスの新しいインスタンスを作成します。

各クラスには暗黙のファクトリーがあります。これは単に新しいオブジェクトにメモリを割り当て、初期値を持つすべてのフィールドを設定し、適切な constructor を呼び出してオブジェクトを初期化します。

この暗黙のファクトリーはオーバーライド可能で、また追加の名前付きファクトリーも定義できます。クラスがインスタンス化される際に対応するファクトリーが存在すると、そのファクトリーがインスタンス化引数と共に起動されます。ファクトリーは、他のファクトリーを使用して適切なオブジェクトをインスタンス化できます。また、既存のインスタンスを返すこともできます。通常は、クラスの既定のファクトリー、または具象サブクラスのファクトリーが使用されます。

ファクトリーは、そのファクトリーを含むクラスのサブクラスであるインスタンスを返さなければなりません。

1 つのクラスについて複数のファクトリーが存在可能です。その場合、各ファクトリーが異なる名前と、場合によっては異なるアクセス属性を持つことができます。ファクトリーへのアクセスは、クラスのインスタンス作成をコントロールします。これは既存のインスタンスの操作のためにアクセスする場合と異なります。

ファクトリーは継承されません。

ファクトリーは、クラスの既存のインスタンスを返す、またはクラスのサブクラスのインスタンスを返すために、クラスのインスタンス化が必要な場合にのみ使用します。

ファクトリーのついての詳細は、『Curl 開発者ガイド』の「ファクトリー」のセクションを参照してください。