劇的にコード量を減らせるLombok
「Lombok」はアノテーションによるコード自動生成を行うライブラリ・ツール。圧倒的にコードの見た目がスッキリするので生産性も劇的に上がる。1度使うと手放せなくなる。
特徴
「Lombok」はアノテーションによるコード自動生成を行うライブラリ・ツール。
Javaではgetterやコンストラクタなどわかりきっているけど何度も何度も書かなければいけないコードがある(俗にボイラープレートコードという)。Eclipseではこれらを自動生成するコマンドがある。それはそれでよいのだが「Lombok」は更に上をいく。それはソースコード上にコードを記述しなくても、アノテーション指定するだけでいいというところ。
例えばフィールド多い場合、getterを自動生成できたとしてもgetterのコードでクラスの半分以上が埋まってしまうことがある。「Lombok」では、ぽつんとアノテーションが加わるだけでクラスの半分以上が埋まるなんてことはない。
ここが革命的に素晴らしいところ。圧倒的にコードの見た目がスッキリするので生産性も劇的に上がる。1度使うと手放せなくなる。
-
「ロンボク」と読む。
-
アノテーションによるコードの自動生成を行う。
-
基本的にはIDEとの連携をしながら利用するので、簡単なインストール作業は必要。
-
コードの自動生成はコンパイル時に行われるのでjarとしてアプリケーションに組み込む必要が無い。よってMavenではscopeをprovidedで指定するのが普通。
-
本体とは少し離れた感じでexperimentalに分類されるモノがある。利用しても構わないが、本体よりはしっかりサポートされない(様子)。適度に使う。
アノテーションによる自動生成の例
「Lombok」はアノテーションを指定するだけで自動生成する。
@Getter
public class Person {
private String name;
}
生成されるコードのイメージは次のようになる。
public class Person {
private String name;
public String getName() {
return name;
}
}
慣れていないと本当に自動生成されるのか不安になるが、例えばEclipseのクイックリアウトラインなんかで確認すると、生成されているのがしっかり確認できる。
どのアノテーションがどんなコードを生成してくれるかは公式サイトにコード付きで説明されているので、そこから見つける。
アノテーション一覧
アノテーション | 概要 |
---|---|
引数なしのコンストラクタの生成。 |
|
finalフィールドを引数にとるコンストラクタの生成。 |
|
全フィールドを引数にとるコンストラクタ |
|
クラス生成を行うビルダークラスの生成。 |
|
getter,setter。 |
|
@Getterと@Setterと@ToStringと@EqualsAndHashCodeと@RequiredArgsConstructor。 |
|
@Dataのイミュータブル版。 |
|
equals()とhashcode()の生成。 |
|
toString()の生成。 |
|
loggerフィールドの生成。 |
アノテーション | 概要 |
---|---|
引数のnullチェック自動生成。 |
|
メソッド全体をsynchronizedブロックで囲うコードの自動生成。ロックに利用するフィールドも自動生成する。synchronizedキーワードとの違いは、全体(this)をロック対象とするか否か。 |
|
チェック例外を囲い再スローするコードの自動生成。 |
アノテーション | 概要 |
---|---|
変数の型宣言をfinalで自動生成。 |
|
指定した変数のclose()処理を自動生成する。 |
Appendix A: 参考
Appendix B: 改訂履歴
-
v1.0,2016-08-10: 初稿