Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

プロパティ

プロパティは、多くのプログラミング言語に存在する概念であり、すでにご存じの方も多いであろうが、改めて復習しましょう。

多くの場合、プロパティはクラスが持つフィールド変数などの「状態」にアクセスするための API です。一般的にフィールド変数などの状態に、クラスの外部から直接アクセスするのは拡張性の面でよくないと言われており、プロパティとしてフィールド変数をカプセル化、gettersetter メソッドを通じて、フィールド変数の値を読み書きします。

また、ある状態が変更された時に、その副作用として関連する項目の状態を変更しなければならないときも、値を変更する setter メソッドの中で、関連する項目の更新を行い、クラス内の状態の生合成の担保や、詳細な使用を外部のクラスから隠蔽します。

Java でプロパティを宣言する

プロパティの概念について再確認ができたところで、Java でプロパティを宣言する方法を見てみましょう。

getter と setter

冒頭で述べたとおり、外部のクラスなどからフィールド変数を直接参照するようなことは、オブジェクト指向のプログラミング言語では基本的に NG とされているため、フィールド変数は private スコープとして宣言します。

public class Person {
    private String name;
}

そして、そのフィールド変数に外部からアクセスするためのアクセッサとして gettersetter メソッドを用意します。

public class Person {
    private String name;

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
}

プロパティにアクセスする

上記で作成したプロパティに、外部のクラスからアクセスする場合は、次のように Person クラスに定義した「getter / setter メソッド」ドを通じて行います。

public class Parent {
  public static void main(String[] args) {
    Person person = new Person();
    // 値の設定(setter)
    person.setName("山田 太郎");
    // 値の取り出し(getter)
    System.out.println(person.getName());
  }
}

getter/setter を自動生成する

プロパティの数、つまり「getter/setterメソッド」でカプセル化が必要なフィールド変数が多くなると、とてもではありませんが、手動で「getter / setter メソッド」を用意するのは大変で現実的ではありません。

Java が登場した初期のころは、この作業も手作業で行われていましたが、現在は統合開発環境のなどのツールによって自動生成できるため、基本的にはツールを使ってメソッドを自動生成します。

Eclipseで getter/setter を自動生成する方法

まずは、Java の統合開発環境として最もメジャーな Eclipse で、getter/setter を自動生成する方法を見ていきましょう。

まず、次のようにプロパティでカプセルかするフィールド変数を用意したコードを準備します。

public class Person {
    private String name;
    private int age;
    private String address;
}

エディタ上で「getter / setter メソッド」を挿入する位置にカーソルを合わせて、右クリック → 「ソース」→「getterおよびsetterの生成」を選択します。

「getter / setter メソッド」を自動生成するフィールド変数にチェックを入れます。(今回はすべてチェック)

また、挿入ポイント、ソート順、アクセス修飾子を設定し「生成」ボタンをクリックすると、自動生成されます。

Visual Studio Codeで自動生成する方法

Visual Studio Code (通称:VSCode)は、軽量・高速なコードエディタで、近年人気を集めており、追加で拡張機能を入れることにより、いろんな機能が追加でき、Java アプリ開発についても、拡張機能を追加することで、ソースコードのフォーマット、候補表示、デバッグ実行などができます。

VSCode でプロパティを自動生成するためには、Java の拡張機能を追加する必要があります。次のイメージのように、拡張機能のメニューより「Extension Pack for Java」を検索しインストールします。

インストールが完了したら、先ほどと同じように、フィールド変数を定義したクラスを準備します。

public class Person {
    private String name;
    private int age;
    private String address;
}

エディタ上で「getter / setter メソッド」を挿入する位置にカーソルを合わせて、右クリック → 「ソースアクション」を選択します。

次に「Generatre Getters and Setters」を選択します。

プロパティを自動生成するフィールド変数を選択し「OK」をクリックします。(今回は全フィールドのチェックをONにします)

すると、次のイメージのように 「getter / setter メソッド」が、エディタのカーソルの位置に挿入されます。

lombokでgetter / setter を省略

「getter / setter メソッド」は、ツールで自動生成できるとはいえ、手間で退屈な作業で、フィールド数が多いクラスともなると、それだけでコードの行数が増えてしまいます。

Lombok はこの冗長になりがちな 「getter / setter メソッド」の記述を省略できるライブラリです。

具体的には、Lombok はソースコード上に「getter / setter メソッド」を記述しなくても、クラスやフィールどにアノテーションを指定しておくだけで、コンパイル時に自動生成してくれます。

つまり、コード上に「getter / setter メソッド」を書かなくても、呼び出し元のクラスからは、getプロパティ名()や、setプロパティ名(value) でアクセスできるのです。

Lombokのインストール

Lombok を以下の URL のページからダウンロードします。

https://projectlombok.org/download.html

ダウンロードした jar ファイルをダブルクリックし、表示された画面の指示に従いインストールします。

ポテパンダの一言メモ

Visual Studio Code で Java の開発をする場合は、上記のインストール手順は不要で、別に「Lombok Annotations Support for VS Code」という拡張機能をインストールする必要があります。

Java プロジェクトへの追加

次に Lombok を使用する Java プロジェクトにも依存関係を追加します。

Maven の場合は、pom.xml に以下の依存関係を追加します。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version>
    <scope>provided</scope>
</dependency>

Gradle の場合は、build.gradle に以下のように依存関係を追加します。

// https://mvnrepository.com/artifact/org.projectlombok/lombok
compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.22'

### Lombokの使い方

Lombok で「getter / setter メソッド」を自動生成する方法には、大きく次の2つの方法があります。

1つ目は「getter / setter」を自動生成するフィールドに、@Getter および @Setter を付ける方法です。@Getter を付けると getter メソッドが、@setter を付けると setter メソッドがコンパイル時に自動生成されます。

import lombok.Getter;
import lombok.Setter;

public class Person {
    @Getter @Setter
    private String name;

    @Getter @Setter
    private int age;

    @Getter @Setter
    private String address;
}

2つ目は、クラスに @Data アノテーションを付ける方法です。@Data を付けると、クラスのすべてのフィールド変数に対し、「getter / setter メソッド」が自動で生成されます。

import lombok.Data;

@Data
public class Person {
    private String name;
    private int age;
    private String address;
}

まとめ

Java のプロパティの概要と、getter と setter メソッドを自動生成する方法を解説しました。プロパティは Java の基本的な概念であるため是非覚えておきましょう。

【関連記事】
Javaオブジェクトをシリアライズしてファイルに出力

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。