Apex-メソッド

クラスメソッド

Apexのクラスメソッドには、パブリックまたはプロテクトの2つの修飾子があります。メソッドには戻り値の型が必須であり、メソッドが何も返さない場合は、戻り値の型としてvoidを指定する必要があります。また、メソッドにはボディも必要です。

Syntax

[public | private | protected | global]
[override]
[static]

return_data_type method_name (input parameters) {
   // Method body goes here
}

構文の説明

角括弧内に記載されているパラメーターはオプションです。ただし、次のコンポーネントは必須です-

  • return_data_type
  • method_name

クラスメソッドのアクセス修飾子

アクセス修飾子を使用して、クラスメソッドのアクセスレベルを指定できます。たとえば、パブリックメソッドは、クラス内およびクラス外のどこからでもアクセスできます。プライベートメソッドは、クラス内でのみアクセスできます。グローバルはすべてのApexクラスからアクセス可能であり、他のapexクラスからアクセス可能なWebサービスメソッドとして公開できます。

Example

//Method definition and body
public static Integer getCalculatedValue () {
   
   //do some calculation
   myValue = myValue+10;
   return myValue;
}

このメソッドの戻り値の型は整数であり、パラメーターを取りません。

メソッドは、次の例に示すようなパラメーターを持つことができます-

// Method definition and body, this method takes parameter price which will then be used 
// in method.

public static Integer getCalculatedValueViaPrice (Decimal price) {
   // do some calculation
   myValue = myValue+price;
   return myValue;
}

クラスコンストラクタ

コンストラクターは、クラスブループリントからオブジェクトが作成されるときに呼び出されるコードです。クラス名と同じ名前です。

デフォルトでは引数のないコンストラクターが呼び出されるため、クラスごとにコンストラクターを定義する必要はありません。コンストラクターは、変数の初期化、またはクラスの初期化時にプロセスを実行する場合に役立ちます。たとえば、クラスが呼び出されたときに、特定の整数変数に0として値を割り当てたいとします。

Example

// Class definition and body
public class MySampleApexClass2 {
   public static Double myValue;   // Class Member variable
   public static String myString;  // Class Member variable

   public MySampleApexClass2 () {
      myValue = 100; //initialized variable when class is called
   }

   public static Double getCalculatedValue () { // Method definition and body
      // do some calculation
      myValue = myValue+10;
      return myValue;
   }

   public static Double getCalculatedValueViaPrice (Decimal price) {
      // Method definition and body
      // do some calculation
      myValue = myValue+price; // Final Price would be 100+100=200.00
      return myValue;
   }
}

コンストラクターを介してクラスのメソッドを呼び出すこともできます。これは、ビジュアルフォースコントローラー用にApexをプログラミングするときに役立つ場合があります。クラスオブジェクトが作成されると、コンストラクタは次のように呼び出されます。

// Class and constructor has been instantiated
MySampleApexClass2 objClass = new MySampleApexClass2();
Double FinalPrice = MySampleApexClass2.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);

コンストラクターのオーバーロード

コンストラクターはオーバーロードできます。つまり、クラスには、異なるパラメーターで定義された複数のコンストラクターを含めることができます。

Example

public class MySampleApexClass3 {  // Class definition and body
   public static Double myValue;   // Class Member variable
   public static String myString;  // Class Member variable

   public MySampleApexClass3 () {
      myValue = 100; // initialized variable when class is called
      System.debug('myValue variable with no Overaloading'+myValue);
   }

   public MySampleApexClass3 (Integer newPrice) { // Overloaded constructor
      myValue = newPrice; // initialized variable when class is called
      System.debug('myValue variable with Overaloading'+myValue);
   }

      public static Double getCalculatedValue () { // Method definition and body
      // do some calculation
      myValue = myValue+10;
      return myValue;
   }

   public static Double getCalculatedValueViaPrice (Decimal price) {
      // Method definition and body
      // do some calculation
      myValue = myValue+price;
      return myValue;
   }
}

前の例で実行したように、このクラスを実行できます。

// Developer Console Code
MySampleApexClass3 objClass = new MySampleApexClass3();
Double FinalPrice = MySampleApexClass3.getCalculatedValueViaPrice(100);
System.debug('FinalPrice: '+FinalPrice);