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);