【Java】Lombokとは?Lombokのアノテーションまとめ

こんにちは。まさきです。
今回はJavaのライブラリであるLombok(ロンボク)の使い方について説明していきます!

スポンサーリンク

Lombokとは

LombokとはJavaのオープンソースライブラリで、アノテーションをクラスやメソッドなどに指定することで、Getter/Setterやコンストラクタ、equalsメソッドなど、どのクラスにもあると便利なメソッドを自動的に生成してくれます。

Lombokの読み方はロンボクかロンボックです。

Javaのコードにアノテーションを付けてコンパイルを行うと、そのタイミングでclass内にメソッドを作成してくれるため、Java上には見えませんがメソッドは実装されています。

アノテーション一覧

Lombokで使えるアノテーションはこちらになります。

アノテーション名使用箇所説明
@Dataクラス 全てのフィールドにGetter/Setterを作成、クラスにデフォルトコンストラクタとtoString(), equals(), hashCode()を自動的に生成する
@Valueクラス全てのフィールドにprivateとfinalを指定してGetterを作成、 全てのフィールドを初期化するコンストラクタを自動的に生成する
@Builderクラスクラスにビルダーパターンを適用する
@ToStringクラスクラスにtoString()を自動的に生成する
@EqualsAndHashCodeクラスクラスにequals()とhashCode()を自動的に生成する
@NoArgsConstructorクラスクラスにデフォルトコンストラクタを自動的に生成する
@RequiredArgsConstructorクラスクラスにfinalフィールドのみを初期化するコンストラクタを自動的に生成する
@AllArgsConstructorクラスクラスに全てのフィールドを初期化するコンストラクタを自動的に生成する
@Getterクラス、フィールドフィールドのゲッターを自動的に生成する
@Setterクラス、フィールドフィールドのセッターを自動的に生成する
@NonNullメソッドの引数引数が自動的にNULLチェックされるようになる
@Cleanupローカル変数スコープの最後で自動的にclose()呼び出される

それではLombokで使えるアノテーションについてeclipseの画面キャプチャとともに詳しく解説していきます。

@Data

Dataアノテーションはクラスに指定することで以下を自動的に作成します。

・引数なしのデフォルトコンストラクタ
・全フィールドに対するゲッターとセッター
・equalsメソッド
・hashCodeメソッド
・toStringメソッド

例えばString型でuserというフィールドを作成します。
このときにクラスに@Dataを指定します。

import lombok.Data;
@Data
public class LombokTest {
	private String user;	
}

自分ではuserフィールドしか宣言していませんが、自動的にこのようなメソッドが作成されます。

@Value

Valueアノテーションはクラスに指定することで以下を自動的に作成します。

・クラスをfinal
・全フィールドがfinal
・ 全フィールドに対するゲッター
・全フィールドを引数に持つコンストラクタ
・equalsメソッド
・hashCodeメソッド
・toStringメソッド

例えばString型でuserとnameフィールドを作成します。
このときにクラスに@Valueを指定します。

import lombok.Value;
@Value
public class LombokTest {
	String user;
	String name;
}

自分ではフィールドしか宣言していませんが、自動的にこのようなメソッドが作成されます。

値をインスタンス生成時のみ代入してそれ以降値の変更を行わないイミュータブルクラスを使いたいときに使用できますね!

@Dataと違うのは値を変更しない想定のためコンストラクタで初期化し、セッターがなく、フィールドがfinalになっているということです。

@NoArgsConstructor

NoArgsConstructorアノテーションはクラスに指定することで引数なしのデフォルトコンストラクタを自動的に作成します。

import lombok.NoArgsConstructor;
@NoArgsConstructor
public class LombokTest {
	String user;
}

このアノテーションによりデフォルトコンストラクタが作成されています。

@RequiredArgsConstructor

RequiredArgsConstructorアノテーションはクラスに指定することでfinalを指定しているフィールドを引数にするデフォルトコンストラクタを自動的に作成します。

import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class LombokTest {
	final String user;
	String  name;
}

このアノテーションによりuserを初期化するためのString1つを引数とするコンストラクタが作成されています。
finalを指定したフィールドが増えればその分引数も増えていきます。

@AllArgsConstructor

AllArgsConstructorアノテーションはクラスに指定することで全てのフィールドを引数とするコンストラクタを自動的に作成します。

import lombok.AllArgsConstructor;
@AllArgsConstructor
public class LombokTest {
	final String user;
	String  name;
}

このアノテーションによりフィールドの数だけである2つ引数とするコンストラクタが作成されています。

@Getter / @Setter

@Getterや@Setterアノテーションはクラスとフィールドに指定することができ、クラスに指定した場合全てのフィールドに対してGetterやSetterを作成し、フィールドに指定した場合指定したフィールドに対してGetterやSetterを作成します。

import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class LombokTest {
	private String user;
}

ゲッターは『getフィールド名』、セッターは『setフィールド名』でフィールド名の先頭は大文字で作成されます。

今回は以上です。
最後まで読んで頂きありがとうございました!

スポンサーリンク
Java
スポンサーリンク
この記事を書いた人

フリーランスエンジニアです。
未経験からSIer企業に入社して開発案件でプログラミングを学び27歳でフリーランスになりました。
主にHTML,CSS,JavaScript,Javaを書いています。
本を読むことが好きなのでIT以外にもいろいろ読んでいます。
好奇心旺盛でとりあえずやってみる精神。
楽しいことが生きがいで、仕事も私生活も楽しくなるように日々奮闘中。
お酒を飲みすぎないことが目標

まさきをフォローする
シェアする
まさきのエンジニア図書館
タイトルとURLをコピーしました