Javaのgetterとsetterとは?使い方もわかりやすく解説

Javaのgetterとsetterとは何ですか?使い方や必要性についても教えて欲しい。
こんな疑問にお答えします。
この記事で解説する「Javaのgetterとsetterの使い方」を読めば、getterとsetterについての理解が深まり、Javaエンジニアとして一段階スキルアップできますよ。

僕自身、現役でフリーランスエンジニアをやっています。実務でJavaを用いた開発を行なっており、Javaの資格も保有していますので、それらの知見を元に丁寧に解説していきますね。
getterとsetterは多くの現場でも使われていることがあるため、これからJavaエンジニアとして活躍していくのであれば、必須の知識といっても過言ではありません。
ぜひ最後までご覧いただき、開発に役立ててみてください!

Javaのgetterとsetterとは
まず基本的なgetter(ゲッター)とsetter(セッター)とは何かを見ていきましょう。
- getterとは
- setterとは
getterとは
getterとは、setterでセットしたフィールドの値を取得して、returnで呼び出し元に値を返すメソッドのことを指しています。
getterの書き方
getterの基本的な書き方は以下の通りです。
// フィールド
private String sample;
// setterメソッド
public String getSample() {
return sample;
}
getterはget〇〇というメソッド名です。この〇〇は、フィールドの名前と同じになります。
setterとは
setterとは、フィールドに値をセットするためのメソッドのことをいいます。setterでセットした値を、getterで取得します。
setterの書き方
setterの基本的な書き方は以下の通り。
// フィールド
private String sample;
// getterメソッド
public String getSample() {
return sample;
}
// setterメソッド
public void setSample(String sample) {
this.sample = sample;
}
setterメソッドは、set〇〇と書きます。この〇〇は、フィールド名と同じです。
setterは呼び出し元のメソッドから値を引数で受け取り、引数の値をthisを使ってフィールドにセットしています。
this.sample = sample;
の「this」はフィールドの値を指しています。this.sample = sample;の「= sample;」
は、引数です。
Javaのgetterとsetterの使い方をわかりやすく解説
getterとsetterの使い方をわかりやすく解説していきますね。
- getterの使い方と命名規則
- setterの使い方と命名規則
getterとsetterの使い方
メインクラスからsetterに値をわたしてセットし、getterで値を取得するプログラムを作成していきましょう。
まずはSampleクラスでgetterとsetterメソッドを作成します。
public class Sample {
// フィールド
private String sample;
// getterメソッド
public String getSample() {
return sample;
}
// setterメソッド
public void setSample(String sample) {
this.sample = sample;
}
}
続いて、メインクラスを作成します。
public class Main {
public static void main(String[] args) {
// Sampleクラスをインスタンス化
Sample sample = new Sample();
// 変数aに値を代入
String a = "こんにちは";
// setterメソッドに変数aを渡す
sample.setSample(a);
// getterメソッドでsetterでセットした変数aを取得し出力する
System.out.println(sample.getSample());
}
}
■実行結果:
こんにちは
上記のコードを解説しますと、まずメインクラスでsetterに変数を渡して、値をSampleクラスのフィールドにセットしています。

そのセットした値をgetterメソッドを呼び出して取得しています。シンプルですね。
getterとsetterの命名規則
getterとsetterの細かな命名規則についても理解しておきましょう。先ほど使用したSampleクラスを例に解説していきます。
public class Sample {
// ①フィールド
private String sample;
// ②getterメソッド
public String getSample() {
return sample;
}
// ③setterメソッド
public void setSample(String sample) {
this.sample = sample;
}
}
- フィールド:アクセス修飾子はprivate、戻り値はセットしたい値に準ずる。
- getterメソッド:アクセス修飾子はpublic、戻り値はフィールドと同じ、メソッド名はget〇〇、return フィールド名;で呼び出し元に値を返す
- setterメソッド:アクセス修飾子はpublic、戻り値はvoid、メソッド名はset〇〇、this.フィールド名 = 引数;で値をセットする
上記の通りですね。
ポイントはフィールドのアクセス修飾子はprivateになるところです。
これは「カプセル化」というオブジェクト指向の概念です。setterメソッドでしかフィールドに値をセットできなくすることで、外部から変数の値を書き換えられなくしています。
setterメソッドは値をセットするだけで何も返さないため、戻り値はvoidです。

ここまで理解しておけば、getterとsetterを実務で使えるレベルには達しているでしょう。
Javaのgetterとsetterを自動生成する方法
getterとsetterは、IDEによっては自動で生成できます。
getterとsetterを生成する場合は、なるべく専用のクラスで作成すると良いですね。
- IDE(Eclipse)で自動生成する
- getterとsetterは専用のクラスで作成しよう
IDE(Eclipse)で自動生成する
今回はEclipse(2020)を使って自動生成する方法を簡単に解説していきますね。
※バージョンによっては解説画像と異なる場合があります
まずgetterとsetter用のクラスを作成します。次にフィールドを作成し、フィールドにマウスカーソルをあてます。
すると下記の画像のように「フィールド Sample.sampleの値は使用されていません」というポップアップが出てきますので「’sample’のgetterおよびsetterを作成します…」をクリックします。

続いて「フィールドのカプセル化」というポップアップがでてきますので、そのままOKをクリックします。

以上でgetterとsetterメソッドができあがりました。

ちなみに上記の方法以外でも、右クリックでも作成できます。フィールド作成後に、空白の箇所で右クリックします。
次に「ソース」を選択し、「getterおよびsetterの生成」をクリックします。

getterとsetterを生成したいフィールドにチェックを入れ、右下の生成をクリックすると、自動生成されます。

getterとsetterは自動生成した方が、文法ミスなどを防げるので、なるべく自動生成すると良いですね。
getterとsetterは専用のクラスで作成しよう
getterとsetterは専用のクラスで生成するのが一般的です。
なぜなら、フィールドの値が増えれば増えるほど、getterとsetterメソッドが大量になるので、コードの可読性が悪くなるからです。
たとえば、多くの現場では、getterとsetterは以下のファイル名で作られることが多いです。
- 〇〇Bean.java
- 〇〇Model.java
- 〇〇Form.java
- 〇〇Entity.java
この辺りは現場のクラスの作成規則に沿って、作成してみると良いでしょう。
Javaのgetterとsetterを省略する方法
Javaのgetterとsetterは、JavaのLombok(ロンボック)というライブラリを利用すると、なんと記述を省略できます。
Lombok は、アノテーションによってgetterやsetter、コンストラクタ等の機能を自動生成するためのライブラリです。
導入方法は以下の通り。
- Lombokのjarファイルをダウンロード
- ダウンロードした lombok.jarをダブルクリック等で起動
- Lombokのインストーラが起動するので、 Specify location… をクリック
- eclipse.exe が存在するフォルダを選択
- Install / Update をクリック
以下は実際にアノテーションでgetterとsetterメソッドを生成したコードです。
public class Sample {
@Getter
@Setter
private String name;
}
上記のように、@Getter、@Setterをフィールドの上に記述することで、getterとsetterメソッドを自動生成してくれます。
目に見えないだけで裏でメソッドが作られているので、実際には以下のコードと同じです。
public class Sample {
@Getter
@Setter
private String name;
// 自動生成される
public String getName() {
return name;
}
// 自動生成される
public void setName(String name) {
this.name = name;
}
}
ちなみにクラスの上につけると、クラス内の全てのフィールドのgetterとsetterメソッドが生成されます。
@Getter
@Setter
public class Sample {
private String name;
private String id;
}

現場によってはgetterとsetterメソッドは省略してはいけないというところもあると思うので、この辺も現場のルールに沿ってやってみてください。
Javaのgetterとsetterの必要性
Javaのgetterとsetterの必要性とは一体なんでしょうか?
最後に以下の2点について解説していきます。
- getterとsetterでカプセル化できる
- セットしている変数を特定しやすい
その1:getterとsetterでカプセル化できる
getterとsetterの必要性は、カプセル化できるところです。
たとえば、変数の中身を外部から書き換えられてしまうと、予期せぬ値が入ってしまい、バグの原因にもなります。
そのため、フィールドはprivateで記述し、同じクラスのsetterとgetterでしか操作できないようにしています。
その2:セットしている変数を特定しやすい
getterとsetterを利用することで、どこで値をセットしているのか、またはゲットしているのかが特定しやすくなります。
getterとsetterメソッドの記述は、シンプルで統一感があるからです。
getterならget〇〇ですし、setterならset〇〇というメソッド名なので、メソッド名もすぐにわかります。
検索すれば簡単に特定できます。

getterとsetter関連のエラーが起きた際に、バグの原因特定までの時間を短縮できます。
まとめ
Javaのgetterとsetterについて解説しました。

getterとsetterは不要という意見も世の中には存在しますが、実際のところ現場ではよく使われるので、覚えておきましょう。
以下の記事では、Javaエンジニアになるためのロードマップをご紹介していますので、あわせて参考にしてみてください。
