Java で Lombok を活用したボイラープレートコードの削減

Lombok は Java 向けのライブラリであり、アノテーションを用いて getter/setter や toString、equals、hashCode、コンストラクタなどの定型コードを自動生成する。これにより、コードの冗長性を減らし、開発効率を向上させることが可能となる。

プロジェクトへの導入手順

Maven での依存関係追加

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

IDE へのプラグインインストール
IntelliJ IDEA や Eclipse などの IDE では、Lombok プラグインをインストールし、再起動することでアノテーション処理が有効になる。

主なアノテーションとその用途

@Getter / @Setter

フィールドに対するアクセサメソッドを自動生成する。

import lombok.Getter;
import lombok.Setter;

public class User {
    @Getter @Setter private String username;
    @Getter @Setter private int score;
}

@FieldNameConstants

フィールド名を文字列として安全に参照できる定数を生成する。

import lombok.experimental.FieldNameConstants;

@FieldNameConstants
public class User {
    private String username;
    private int score;
}

使用例:

String field = User.$FieldNameConstants.username; // "username"

@ToString

toString() メソッドを自動実装する。

import lombok.ToString;

@ToString
public class User {
    private String username;
    private int score;
}

@EqualsAndHashCode

equals() および hashCode() を自動生成する。

import lombok.EqualsAndHashCode;

@EqualsAndHashCode
public class User {
    private String username;
    private int score;
}

@NoArgsConstructor

引数なしのコンストラクタを生成する。

import lombok.NoArgsConstructor;

@NoArgsConstructor
public class User {
    private String username;
    private int score;
}

@AllArgsConstructor

すべてのフィールドを引数にとるコンストラクタを生成する。

import lombok.AllArgsConstructor;

@AllArgsConstructor
public class User {
    private String username;
    private int score;
}

@RequiredArgsConstructor

final または @NonNull が付与されたフィールドのみを対象にコンストラクタを生成する。

import lombok.RequiredArgsConstructor;
import lombok.NonNull;

@RequiredArgsConstructor
public class Service {
    private final Database db;
    @NonNull private Logger logger;
}

タグ: Java lombok Annotation Processing

6月20日 22:10 投稿