Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

Lombokでコード削減(Getter/Setter/コンストラクタ)

Lombokアノテーションを使って、Java の Getter/Setter やコンストラクタを自動生成する方法を書いていきます。

目次

  1. Lombokの追加
  2. アノテーションの概要
  3. @Getter/@Setter
  4. @AllArgsConstructor
  5. @NoArgsConstructor
  6. @Data
  7. Eclipseへのインストール

1. Lombokの追加

Maven の場合は、以下の依存性を追加します。

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

Gradle の場合は以下の通りです。

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.24'
    annotationProcessor 'org.projectlombok:lombok:1.18.24'
    testCompileOnly 'org.projectlombok:lombok:1.18.24'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.24'
}

2. アノテーションの概要

アノテーションの概要は以下の通りです。

アノテーション 生成されるコード
@Getter/@Setter Getter/Setter
@AllArgsConstructor 全引数有りのコンストラク
@NoArgsConstructor 引数無しのコンストラク
@Data Getter/Setter, toString 等

以下に詳細を記載していきます。

3. @Getter/@Setter

@Getter, @Setter を付けると、全てのプロパティに対して getter と setter を生成してくれます。

package org.sample;

import lombok.Getter;
import lombok.Setter;

public class GetterSetterMain {
  @Getter @Setter
  private static class Customer {
    private long id;
    private String name;
  }
  public static void main(String[] args) {
    Customer customer = new Customer();
    // Getter, Setter が使えることを確認
    customer.setId(1);
    customer.setName("佐藤");
    System.out.println(customer.getId());
    System.out.println(customer.getName());
  }
}

4. @AllArgsConstructor

@AllArgsConstructor を付けると、全てのプロパティが指定可能なコンストラクタを生成してくれます。

package org.sample;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

public class AllArgsConstructorMain {
  @Getter @Setter
  @AllArgsConstructor
  private static class Customer {
    private long id;
    private String name;
  }
  public static void main(String[] args) {
    // コンストラクタで全てのプロパティを指定可能
    Customer customer = new Customer(1, "鈴木");
    System.out.println(customer.getId());
    System.out.println(customer.getName());
  }
}

5. @NoArgsConstructor

@NoArgsConstructor を付けると、引数なしのコンストラクタを生成してくれます。

package org.sample;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

public class ConstructorMain {
  @Getter @Setter
  @NoArgsConstructor
  @AllArgsConstructor
  private static class Customer {
    private long id;
    private String name;
  }
  public static void main(String[] args) {
    // デフォルトコンストラクタも使用可能
    Customer customer1 = new Customer();
    Customer customer2 = new Customer(1, "鈴木");
  }
}

6. @Data

@Data を付けると、以下の全てのアノテーションの効果を得ることができます。

  • @Getter
  • @Setter
  • @ToString
  • @EqualsAndHashCode
  • @RequiredArgsConstructor

生成されるコード例は、Lombok のページで確認することができます。

@Data - projectlombok.org

7. Eclipseへのインストール

EclipseLombok を使う方法は、以下の記事を参照して頂けると嬉しいです。

EclipseにLombokをインストールする方法