こんにちは。まさきです。
今回は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フィールド名』でフィールド名の先頭は大文字で作成されます。
今回は以上です。
最後まで読んで頂きありがとうございました!