Lombok のアノテーションを使って、Java の Getter/Setter やコンストラクタを自動生成する方法を書いていきます。
目次
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 のページで確認することができます。