この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

クラスメソッド

メソッドを定義するには、次を指定します。
  • 省略可能: publicprotected などの修飾子。
  • 必須: String や Integer など、メソッドが返す値のデータ型。メソッドが値を返さない場合は、void を使用します。
  • 必須: カンマで区切られたメソッドの入力パラメータのリスト。括弧 () で囲まれます。各パラメータの前にデータ型を指定します。パラメータがない場合は、1 組の空の括弧を使用します。メソッドに指定できるパラメータは 32 個までです。
  • 必須: 中括弧 {} で囲まれたメソッドの本文。ローカル変数宣言を含めたメソッドのすべてのコードがここに含まれます。
メソッドを定義するには、次の構文を使用します。

override を使用して上書きできるのは、virtual または abstract として定義されたクラスのメソッドのみです。

メモ

次に例を示します。

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 などの非プリミティブデータ型引数は、参照によってメソッドに渡されます。そのため、メソッドが返ったときに、渡された引数はメソッドをコールする前と同じオブジェクトをそのまま参照することになります。メソッド内の参照を別のオブジェクトを指し示すように変更することはできませんが、オブジェクトの項目の値は変更できます。

メソッドにプリミティブデータ型と非プリミティブデータ型を渡す例を次に示します。

例: プリミティブデータ型引数を渡す

この例では、String 型のプリミティブ引数が値によって別のメソッドに渡されることを示します。この例の debugStatusMessage メソッドは、String 変数 msg を作成して値を割り当てます。次に、この変数を引数として別のメソッドに渡し、この String の値を変更します。ただし、String はプリミティブ型のため、値によって渡され、メソッドが返ったときに、元の変数 msg の値は変更されていません。assert ステートメントは、msg の値が古い値のままであることを確認します。

例: 非プリミティブデータ型引数を渡す

この例では、List 引数を参照によって reference() メソッドに渡し、変更する方法を示します。その後、referenceNew() メソッド内で、List 引数は別の List オブジェクトを参照するようには変更できないことを示します。

最初に、createTemperatureHistory メソッドで変数 fillMe (Integer の List) を作成し、その変数を別のメソッドに渡します。コールされたメソッドは、丸められた温度値を表す Integer 値をこの List に入力します。メソッドが返ったときに、元の List 変数が変更されていて現在 5 つの値が含まれていることを assert ステートメントで確認します。次に、2 番目の List 変数 createMe を作成し、別のメソッドに渡します。コールされたメソッドは、渡された引数を新しい Integer 値を含む新しく作成された List に割り当てます。メソッドが返ったときに、元の createMe 変数は新しい List は参照せず、元の空の List を参照します。assert ステートメントで createMe に値が含まれないことを確認します。

バージョン管理動作の変更

API バージョン 50.0 以降の場合、範囲およびアクセシビリティのルールは、@namespaceAccessible アノテーションが付加されている Apex 変数、メソッド、内部クラス、およびインターフェースに適用されます。アクセシビリティの考慮事項については、「NamespaceAccessible アノテーション」を参照してください。名前空間ベースの参照についての詳細は、「第二世代パッケージでの Apex クラスの名前空間ベースの参照」を参照してください。