【Salesfoce】Apexのゲッターセッターとは?使い方を解説

Salesforce

こんにちは、ヨリユです。
本記事ではApexのゲッター(get)とセッター(set)について解説していきます。
Visualforce開発でよく使用する機能ですので、簡単な使い方を押さえておきましょう。

【この記事から学べること】
・ゲッターセッターでApexの値をVisualforceに表示する方法
・ゲッターセッターでApexとVisualforceをバインドする方法
・セッターで条件分岐を行い、表示を制御する方法

ゲッターセッターとは?

ゲッターセッターとは、Apexクラス内のプロパティ(=メンバ変数)にアクセスするためのメソッドです。
これらのメソッドは、プロパティの値の取得(get)および設定(set)を制御します。
プロパティの値を「Visualforce画面に表示」する際などに使用されます。

ゲッターセッターの使い方

①基本構文
基本構文は以下のとおりです。
プロパティ「age」の値をVisualforceで表示します。

【Apex】

public class GetSetSamp {
    public Integer age {
        get { return age; }
        set { 
            age = value; 
        }
    }
    public GetSetSamp() {
        this.age = 20;
    }
}

【Visualforce】

<apex:page controller="GetSetSamp" sidebar="false">
	<apex:outputText value="年齢:{!age}" style="font-size:2em;"></apex:outputText>
</apex:page>

【表示】
ApexとVisualforceのバインドができて、画面表示することができました。

ApexとVisualforceバインド後の画面


②自動プロパティ
自動プロパティとは、簡単に言うと①の基本構文をシンプルにしたものです。
上記①のような単純なバインドであれば、以下のように書くこともできます。

【Apex】

public class GetSetSamp {
    public Integer age { get; set; }
    public GetSetSamp() {
        this.age = 20;
    }
}

【表示】
①と同様に表示されました。

自動プロパティによるバインド後の画面

③基本構文の応用
例えば、プロパティの値を設定する際、設定する値によって、「他のプロパティの値を制御したい」ということもあるでしょう。では、サンプルコードを見ていきます。
コンストラクタで値が代入されたときにsetが呼び出され、代入された値(今回は20)によってプロパティ「judge」の値を制御しています。

【Apex】

public class GetSetSamp {
    public String judge { get; set; }
    public Integer age {
        get { return age; }
        set { 
            age = value; 
            if (age >= 20) {
                this.judge = 'OK.';
            } else {
                this.judge = 'NG.';
            }
        }
    }
    public GetSetSamp() {
        this.age = 20;
    }
}

【Visualforce】

<apex:page controller="GetSetSamp" sidebar="false">
	<apex:outputText value="年齢:{!age}" style="font-size:2em;"></apex:outputText>
	<br/>
	<apex:outputText value="判定:{!judge}" style="font-size:2em;"></apex:outputText>
</apex:page>

【表示】
想定通り”OK.”と表示されています。

基本構文応用例の画面

まとめ

いかがでしたでしょうか。
今回は、ゲッターセッターの基本的な使い方をみてきました。
ゲッターセッターは、Visualforce開発で頻繁に使用するかと思います。
ぜひ実際に動かしてみて、使い方を習得していきましょう!
最後までご覧いただきありがとうございました!