Lombokとは?#
Lombokはコードの自動生成によってJavaの開発を支援するライブラリ。
例えばフィールドにアノテーションを指定すると対応するgetterやsetterをコンパイル時に自動生成してくれる。
Lombokのアノテーション#
@Data
@ToString
,@EqualsAndHashCode
,@Getter
,@Setter
,@RequiredArgsConstructor
をまとめたもの
@ToString
- 自動で.toString()を定義してくれる
@EqualsAndHashCode
equalsメソッドとhashCodeメソッドを自動で定義してくれる
@Getter
- フィールドへのGetterを自動で定義してくれる
@Setter
- フィールドへのSetterを自動で定義してくれる
@RequiredArgsConstructor
- 引数が必要なコンストラクタを自動で定義してくれる
@NoArgsConstructor
- 引数が必要ないコンストラクタを自動で定義してくれる
@AllArgsConstructo
- 全ての引数が必要なコンストラクタを自動で定義してくれる
@Builder
- クラスのビルダーメソッドを自動で追加してくれる
@Value
- クラスのイミュータブル(書き換え不能)にできる
@SneakyThrows
- チェック例外に関して、場合によっては発生しないことが確定しているにも関わらず対処しなければならないような場面がある
- このような場面で例外の発生を覆い隠すことができる(実際には実行時例外にラップする)
@Synchronized
- 自動生成されたロックオブジェクトでsynchronizedブロックが生成された状態になる
@With
- withメソッドを自動で生成してくれる
- Immutableなクラスでは、クラス内のメンバの値を変更したい場合にwithXXXXというメソッドを定義することがよくあるらしい
- withメソッドは元のインスタンスの内容は変更せず、指定の値を持つ新しいインスタンスを返す
@Getter(lazy=true)
- 遅延初期化できるようになる
- 参考
@Log
- log という名前でロガーを使用することができるようになる
Lombokの導入(IntelliJ IDEA)#
公式ページ に書いてあるようにpomファイルに以下の設定を追記
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<scope>provided</scope>
</dependency>
</dependencies>
- メニューの「IntelliJ IDEA」 > 「Preferences」 > 「Build, Execution, Deployment」 > 「コンパイラー」> 「Annotation Processors」までたどっていき、「Enable annotation processing」にチェックを入れる
- メニューの「IntelliJ IDEA」 > 「Preferences」 > 「Pulugin」から「Lombok」のプラグインを入れる