getter/setter
日本語 | 取得/設定 |
英語 | getter setter |
ふりがな | げったー/せったー |
フリガナ | ゲッター/セッター |
getterメソッドとsetterメソッドのこと。
通常、フィールドはprivateフィールドとするため、そのフィールドから値を取得する、また値をセットするメソッドが必要となる。それがgetter/setterである。
詳しくは「getter」「setter」を参照。
Eclipseであれば、ソースの右クリックメニューの「ソース」-「Getter および Setter の生成」で簡単に作成できる。
getter/setterのメソッド名は非常に重要である。なぜなら、フィールド名を指定すると、そのフィールド名を元に自動的にgetter/setterメソッド名を作り、そのメソッド名でgetter/setterを呼び出す、という機能が多く存在するためである。
たとえばdataというフィールドを持つクラスがあるとする。このクラスに、"data"という文字列を指定することでdataフィールドの値を取得したり値をセットしたりすることができる機能が存在する。
この時、"data"という名前から、getterは"getData"、setterは"setData"というメソッド名を自動生成し、これらのメソッドが呼び出されている。つまり、フィールド名からメソッド名を予測し、そのメソッドが呼び出されているのである。
こういった機能を使用するため、getter及びsetterのメソッド名は必ずフィールド名を元に生成すること。正しいメソッド名にしておけば、全く関係ない2つのクラスが同じフィールド名のフィールドを持つ場合に「自動的にコピーする」といったこともできるようになる。
通常、フィールドはprivateフィールドとするため、そのフィールドから値を取得する、また値をセットするメソッドが必要となる。それがgetter/setterである。
詳しくは「getter」「setter」を参照。
Eclipseであれば、ソースの右クリックメニューの「ソース」-「Getter および Setter の生成」で簡単に作成できる。
getter/setterのメソッド名は非常に重要である。なぜなら、フィールド名を指定すると、そのフィールド名を元に自動的にgetter/setterメソッド名を作り、そのメソッド名でgetter/setterを呼び出す、という機能が多く存在するためである。
たとえばdataというフィールドを持つクラスがあるとする。このクラスに、"data"という文字列を指定することでdataフィールドの値を取得したり値をセットしたりすることができる機能が存在する。
この時、"data"という名前から、getterは"getData"、setterは"setData"というメソッド名を自動生成し、これらのメソッドが呼び出されている。つまり、フィールド名からメソッド名を予測し、そのメソッドが呼び出されているのである。
こういった機能を使用するため、getter及びsetterのメソッド名は必ずフィールド名を元に生成すること。正しいメソッド名にしておけば、全く関係ない2つのクラスが同じフィールド名のフィールドを持つ場合に「自動的にコピーする」といったこともできるようになる。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
NormalClass normalClass = new NormalClass();
// privateフィールドを、getter/setterを経由して
// アクセスします。
normalClass.setData( 100 );
System.out.println( normalClass.getData() );
// 100
}
}
/**
* フツーのクラス。
*/
class NormalClass
{
/**
* privateなフィールド。
*/
private int data;
// このフィールドのgetter/setterが、
// 以下の2つのメソッドです。
/**
* getter。
*/
public int getData()
{
return data;
}
/**
* setter。
*/
public void setData( int value )
{
this.data = value;
}
}
public class Sample
{
public static void main( String[] args )
{
NormalClass normalClass = new NormalClass();
// privateフィールドを、getter/setterを経由して
// アクセスします。
normalClass.setData( 100 );
System.out.println( normalClass.getData() );
// 100
}
}
/**
* フツーのクラス。
*/
class NormalClass
{
/**
* privateなフィールド。
*/
private int data;
// このフィールドのgetter/setterが、
// 以下の2つのメソッドです。
/**
* getter。
*/
public int getData()
{
return data;
}
/**
* setter。
*/
public void setData( int value )
{
this.data = value;
}
}
// Sample.java public class Sample { public static void main( String[] args ) { NormalClass normalClass = new NormalClass(); // privateフィールドを、getter/setterを経由して // アクセスします。 normalClass.setData( 100 ); System.out.println( normalClass.getData() ); // 100 } } /** * フツーのクラス。 */ class NormalClass { /** * privateなフィールド。 */ private int data; // このフィールドのgetter/setterが、 // 以下の2つのメソッドです。 /** * getter。 */ public int getData() { return data; } /** * setter。 */ public void setData( int value ) { this.data = value; } }