Newer Version Available
クラスメソッド
- 省略可能: public や protected などの修飾子。
- 必須: String や Integer など、メソッドが返す値のデータ型。メソッドが値を返さない場合は、void を使用します。
- 必須: カンマで区切られたメソッドの入力パラメータのリスト。括弧 () で囲まれます。各パラメータの前にデータ型を指定します。パラメータがない場合は、1 組の空の括弧を使用します。メソッドに指定できるパラメータは 32 個までです。
- 必須: 中括弧 {} で囲まれたメソッドの本文。ローカル変数宣言を含めたメソッドのすべてのコードがここに含まれます。
Java の場合と同様に、結果が別の変数に割り当てられない場合、値を返すメソッドもステートメントとして実行できます。
- システムメソッドが使用されている任意の場所で使用できます。
- 再帰可能です。
- sObject ID を初期化する DML insert ステートメントなど、悪影響がある可能性があります。「Apex DML ステートメント」を参照してください。
- ユーザ定義メソッド自体または同じクラスまたは匿名ブロックで後で定義されたメソッドを参照できます。Apex は、2 つのフェーズでメソッドを解析します。そのため、事前の宣言は必要ありません。
- 多相的な実装が可能です。たとえば、example というメソッドは、1 つの integer パラメータを使用する場合と、2 つの integer パラメータを使用する場合の、2 とおりの方法で実装できます。Apex のパーサーは、メソッドが 1 つの integers でコールされるか 2 つの interger でコールされるかによって適切な実装を選択して実行します。パーサーで完全一致を検出できない場合、データ型の強制規則を使用して、おおよその一致を検索します。データ変換の詳細は、「変換の規則」を参照してください。
- 戻り値の型が void のメソッドは、Apex コードのスタンドアロンステートメントとして呼び出されます。次に例を示します。
- 結果が別の変数に割り当てられない場合、戻り値をステートメントとして実行するステートメントを指定できます。このルールは Java と同じです。
値によってメソッド引数を渡す
Apex では、Integer または String などのすべてのプリミティブデータ型引数は、値によってメソッドに渡されます。つまり、引数への変更はメソッドの範囲内でのみ存在することになります。メソッドが返ったときに、その引数への変更は失われます。
sObject などの非プリミティブデータ型引数は、参照によってメソッドに渡されます。そのため、メソッドが返ったときに、渡された引数はメソッドをコールする前と同じオブジェクトをそのまま参照することになります。メソッド内の参照を別のオブジェクトを指し示すように変更することはできませんが、オブジェクトの項目の値は変更できます。
メソッドにプリミティブデータ型と非プリミティブデータ型を渡す例を次に示します。
例: プリミティブデータ型引数を渡す
例: 非プリミティブデータ型引数を渡す
この例では、List 引数を参照によって reference() メソッドに渡し、変更する方法を示します。その後、referenceNew() メソッド内で、List 引数は別の List オブジェクトを参照するようには変更できないことを示します。
バージョン管理動作の変更
API バージョン 50.0 以降の場合、範囲およびアクセシビリティのルールは、@namespaceAccessible アノテーションが付加されている Apex 変数、メソッド、内部クラス、およびインターフェースに適用されます。アクセシビリティの考慮事項については、「NamespaceAccessible アノテーション」を参照してください。名前空間ベースの参照についての詳細は、「第二世代パッケージでの Apex クラスの名前空間ベースの参照」を参照してください。