4
3

More than 3 years have passed since last update.

いまさらLombokの使い方

Last updated at Posted at 2020-06-20

はじめに

あるプロジェクトのソースをインポートすると、ビルドエラーがいっぱいありました。
XXXBuilderが存在しないようなエラーがいっぱいあります。
build.gradleを見るとlombokのライブリを使ってますが、実はIDEにもLombokのプラグインインストールする必要があります。

Lombok

Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.

Spring Tool Suite

lombokダウンロード

lombok JARにダブルクリック

image.png

Specify location をクリックして、STSのフォルダー選択

image.png

Selectボタンを押す

image.png

Install / update をクリック

image.png

インストール完了。

Idea

File ⇒ Settings ⇒ Plugins ⇒ lombok入力して検索

image.png

Installedにすでに存在する場合はインストールする必要がありません。

MarketPlaceタブに選択して、lombok入力して検索

image.png

Installボタンを押す

image.png

Restart IDEボタンを押して完了。

VSCode

Lombok Annotations Support for VS Codeという拡張を使ってビルドエラー回避できます。
https://marketplace.visualstudio.com/items?itemName=GabrielBB.vscode-lombok

「Lombok Annotations Support for VS Code」をインストール

image.png

Installボタンを押す

インストールした後、念の為VSCodeを再起動

Lombokの使い方

Lombok features

build.gradleにlombokライブラリ追加

build.gradle
    // https://mvnrepository.com/artifact/org.projectlombok/lombok
    compile group: 'org.projectlombok', name: 'lombok', version: '1.18.12'

@Getter/@Setter

image.png

わかりやすいですが、getter,setterメソッドを自動生成します。

@ToString

toStringメソッドは、@ToString(exclude = "age", callSuper = false)のように定義して制御
image.png

除外されたageフィールドのみ未使用となっています。

@EqualsAndHashCode

image.png

hashCode,equals,canEqual3つのメソッドが生成します。

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

image.png

@Value

image.png

@Builder

image.png

@Data

image.png

上記の例の通り、下記らのアノテーションのまとめです。

  • @ToString
  • @EqualsAndHashCode
  • すべての非finalフィールドの@Getter
  • すべての非finalフィールドの@Setter
  • @RequiredArgsConstructor

@Log

image.png

@Cleanup

リソースを自動解放されるアノテーションです。自分でリソースのclose処理を省略できるので便利です。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import lombok.Cleanup;

public class TestMain {

    public static void main(String[] args) throws Exception {
        @Cleanup
        InputStream in = new FileInputStream(args[0]);
        @Cleanup
        OutputStream out = new FileOutputStream(args[1]);

        byte[] b = new byte[1024];
        while (true) {
            int r = in.read(b);
            if (r == -1) {
                break;
            }
            out.write(b, 0, r);
        }
    }

}

はかもval, var, @NonNull,@Getter(lazy=true),@Helper, @Slf4jなどなどがあります。

これらのアノテーションを使うとBeanクラスの量は削減できて、メンテナンスにも良くなります。

以上

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3