Java
PR

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

javaのgetterとsetterとは?使い方もわかりやすく解説
shin-memo
記事内にプロモーションを含む場合があります

Javaのgetterとsetterとは何ですか?使い方や必要性についても教えて欲しい。

こんな疑問にお答えします。

運営者:シン
運営者:シン
Profile
フリーランスエンジニア|大阪在住|31歳【保有資格】Java Gold・ITパスポート・SEO検定全級・全日本SEO協会認定SEOスペシャリスト【経歴】配送業▶︎販売員▶︎プログラミングスクール受講▶︎プログラマー▶︎独立【発信内容】プログラミング・エンジニア転職・フリーランス
プロフィールを読む

この記事で解説する「Javaのgetterとsetterの使い方」を読めば、getterとsetterについての理解が深まり、Javaエンジニアとして一段階スキルアップできますよ。

シン
シン

僕自身、現役でフリーランスエンジニアをやっています。実務でJavaを用いた開発を行なっており、Javaの資格も保有していますので、それらの知見を元に丁寧に解説していきますね。

getterとsetterは多くの現場でも使われていることがあるため、これからJavaエンジニアとして活躍していくのであれば、必須の知識といっても過言ではありません。

ぜひ最後までご覧いただき、開発に役立ててみてください!

あわせて読みたい
Javaエンジニアの学習ロードマップ!実践で使える技術を厳選【2023年版】
Javaエンジニアの学習ロードマップ!実践で使える技術を厳選【2023年版】

Javaのgetterとsetterとは

まず基本的なgetter(ゲッター)とsetter(セッター)とは何かを見ていきましょう。

  1. getterとは
  2. 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の使い方をわかりやすく解説していきますね。

  1. getterの使い方と命名規則
  2. 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;
  }

}
getterとsetterの命名規則
  • フィールド:アクセス修飾子はprivate、戻り値はセットしたい値に準ずる。
  • getterメソッド:アクセス修飾子はpublic、戻り値はフィールドと同じ、メソッド名はget〇〇、return フィールド名;で呼び出し元に値を返す
  • setterメソッド:アクセス修飾子はpublic、戻り値はvoid、メソッド名はset〇〇、this.フィールド名 = 引数;で値をセットする

上記の通りですね。

ポイントはフィールドのアクセス修飾子はprivateになるところです。

これは「カプセル化」というオブジェクト指向の概念です。setterメソッドでしかフィールドに値をセットできなくすることで、外部から変数の値を書き換えられなくしています。

setterメソッドは値をセットするだけで何も返さないため、戻り値はvoidです。

シン
シン

ここまで理解しておけば、getterとsetterを実務で使えるレベルには達しているでしょう。

Javaのgetterとsetterを自動生成する方法

getterとsetterは、IDEによっては自動で生成できます。

getterとsetterを生成する場合は、なるべく専用のクラスで作成すると良いですね。

  1. IDE(Eclipse)で自動生成する
  2. getterとsetterは専用のクラスで作成しよう

IDE(Eclipse)で自動生成する

今回はEclipse(2020)を使って自動生成する方法を簡単に解説していきますね。
※バージョンによっては解説画像と異なる場合があります

まずgetterとsetter用のクラスを作成します。次にフィールドを作成し、フィールドにマウスカーソルをあてます。

すると下記の画像のように「フィールド Sample.sampleの値は使用されていません」というポップアップが出てきますので「’sample’のgetterおよびsetterを作成します…」をクリックします。

javaのgetterとsetterを自動生成する方法1

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

javaのgetterとsetterを自動生成する方法2

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

javaのgetterとsetterを自動生成する方法3

ちなみに上記の方法以外でも、右クリックでも作成できます。フィールド作成後に、空白の箇所で右クリックします。

次に「ソース」を選択し、「getterおよびsetterの生成」をクリックします。

javaのgetterとsetterを自動生成する方法4

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

javaのgetterとsetterを自動生成する方法5

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点について解説していきます。

  1. getterとsetterでカプセル化できる
  2. セットしている変数を特定しやすい

その1:getterとsetterでカプセル化できる

getterとsetterの必要性は、カプセル化できるところです。

カプセル化とは、オブジェクト指向の概念の一つで、簡単にいうと情報を外側から操作できないように隠蔽(いんぺい)することです。

たとえば、変数の中身を外部から書き換えられてしまうと、予期せぬ値が入ってしまい、バグの原因にもなります。

そのため、フィールドはprivateで記述し、同じクラスのsetterとgetterでしか操作できないようにしています。

その2:セットしている変数を特定しやすい

getterとsetterを利用することで、どこで値をセットしているのか、またはゲットしているのかが特定しやすくなります。

getterとsetterメソッドの記述は、シンプルで統一感があるからです。

getterならget〇〇ですし、setterならset〇〇というメソッド名なので、メソッド名もすぐにわかります。

検索すれば簡単に特定できます。

javaのgetterとsetterを検索

getterとsetter関連のエラーが起きた際に、バグの原因特定までの時間を短縮できます。

まとめ

Javaのgetterとsetterについて解説しました。

シン
シン

getterとsetterは不要という意見も世の中には存在しますが、実際のところ現場ではよく使われるので、覚えておきましょう。

以下の記事では、Javaエンジニアになるためのロードマップをご紹介していますので、あわせて参考にしてみてください。

あわせて読みたい
Javaエンジニアの学習ロードマップ!実践で使える技術を厳選【2023年版】
Javaエンジニアの学習ロードマップ!実践で使える技術を厳選【2023年版】
運営者情報
運営者:シン
運営者:シン
フリーランスエンジニア|大阪在住|31歳【保有資格】Java Gold・ITパスポート・SEO検定全級・全日本SEO協会認定SEOスペシャリスト【経歴】配送業▶︎販売員▶︎プログラミングスクール受講▶︎プログラマー▶︎独立【発信内容】プログラミング・エンジニア転職・フリーランス
記事URLをコピーしました