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

レッスン 4: 静的変数、定数、およびメソッド

これまでに作成した変数とメソッドは、インスタンスメソッドとインスタンス変数です。つまり、modelNumber 変数と numberInStock 変数を使用するには、最初にクラスのインスタンスを作成する必要があります。個々のインスタンスには、インスタンス変数の独自のコピーがあり、インスタンスメソッドはこれらの変数にアクセスできます。場合によっては、メンバー変数の値をすべてのインスタンスから使用できるようにする必要があります。たとえば、在庫のしきい値変数の値が Fridge クラスのすべてのインスタンスと共有されていて、あるインスタンスが行った更新を他のすべてのインスタンスから参照できるようにする場合などです。この場合、静的変数を作成する必要があります。静的変数は、インスタンスではなくクラスに関連付けられ、クラスをインスタンス化せずにアクセスできます。

インスタンスではなく、クラスに関連付けられた静的メソッドを定義することもできます。通常、インスタンスの状態に依存しないユーティリティメソッドが静的にするのに適しています。 

  1. 次の静的変数を追加して Fridge クラスを変更します。
    1public static Integer stockThreshold = 5;
  2. 開発者コンソールで次のコードを実行します。
    1System.debug ( Fridge.stockThreshold );
    5 が出力されます。ここでは new 演算子を使用して Fridge クラスのインスタンスを作成する必要はありませんでした。クラスの変数にアクセスしただけです。
  3. クラス名を使用してこの静的変数にアクセスし、その値を変更することもできます。
    1// Modify the static stock threshold value
    2Fridge.stockThreshold = 4;
    3System.debug ( Fridge.stockThreshold );
    出力に 4 が書き出されます。
  4. 変更できない定数として変数を宣言する場合があります。Apex でこれを行うには final キーワードを使用します。これは、変数への値の割り当てが 1 回限りであることを示します。宣言した静的変数を次のように変更します。
    1public static final Integer STOCK_THRESHOLD = 5;
    引き続き項目の値を出力できます。たとえば、Fridge.STOCK_THRESHOLD; は機能しますが、その他の値を項目に割り当てることはできません。たとえば、Fridge.STOCK_THRESHOLD = 3; は機能しません。
  5. では、引数で渡されたオブジェクトの値を出力する静的クラスメソッドを定義してみましょう。これは、デバッグに非常に役立ちます。次のように新しいメソッドを Fridge クラスに追加します。
    1public static void toDebug(Fridge aFridge) {
    2    System.debug ('ModelNumber = ' + aFridge.modelNumber);
    3    System.debug ('Number in Stock = ' + aFridge.numberInStock);
    4}
  6. この新しいメソッドをテストするには、開発者コンソールでメソッドをコールし、Fridge インスタンスを渡します。
    1Fridge myFridge = new Fridge('MX-Y', 200);
    2Fridge.toDebug(myFridge);
    開発者コンソールには次のように出力されます。
    静的 toDebug メソッドの出力

    これで、作成したオブジェクトのダンプを簡単に開発者コンソールに表示できるようになりました。