【Java】アクセサ ~ getter / setter ~

はじめに

 * 以前、後輩に「getter / setterって意味あるんですか?」って聞かれて
   うまく答えられず。たまたま、その関連記事を見つけたので、まとめておく。

アクセサの意義

 [1] 不正な値をチェックできる
 [2] 代入可能で参照不可のプロパティを作れる
 [3] 参照可能で代入不可のプロパティを作れる

[1] 不正な値をチェックできる

サンプル

private int value;

public void setValue(int value) {
    // !ここ! 
   if (value > 0) {
      throw new IllegalArgumentException();
   }
   this.value = value;
}

public int getValue() {
   return this.value;
}

[2] 代入可能で参照不可のプロパティを作れる

 * setterのみでgetterがない

サンプル

private int value;

// ! setterのみでgetterはない !
public void setValue(int value) { 
   this.value = value;
}

[3] 参照可能で代入不可のプロパティを作れる

 * つまりReadonlyの変数を作成可能
 * getterのみでsetterがない

サンプル

private int value;

// ! getterのみでsetterがない !
public int getValue() {
   return this.value;
}

関連記事

 * デザインパターン「Immutableパターン」として名前がついてた
http://blogs.yahoo.co.jp/dk521123/34228254.html