Java Lombokのアノテーションのサンプル

JavaのLombokのアノテーションのサンプルです。
(確認環境:Java8,Eclipse4.8,Windows10)

目次

サンプル lombokとは
  @Data (getter,setter + 他)
@Slf4j (ログを出力する)
@Getterと@Setter (getterとsetter)
@AllArgsConstructor (全項目でコンストラクタ)
@NoArgsConstructor (デフォルトコンストラクタ)
@RequiredArgsConstructor (finalがある項目でコンストラクタ)
@EqualsAndHashCode(equalsメソッドとhashcodeメソッド)

lombokとは

  • getterとsetter等の定形コードを記述しなくて良くなる機能を持つライブラリです。
  • アノテーションを付けることで実現します。
  • ロンボックと呼びます。
  • 機能はそれ以外にもあります。以下のLombok featuresのリンクを参照願います。
    https://projectlombok.org/features/all

@Dataを指定 (getter,setter + 他)

package test1;
import lombok.Data;

@Data
public class Product {
    private String name;
    private int price;
}

2行目は、lombok.Dataをインポートしています。
4行目の@Dataアノテーションを付けると6,7行目の値は自動でgetterとsetterが付いていることになります。

アウトラインを見ると、getterとsetterが付いていることがわかります。
その他にequals()、hashCode()、toString()なども生成されます。

 

@Slf4jを指定 (ログを出力する)

package test1;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Test1 {
	public static void main(String[] args) {
//		Logger log = LoggerFactory.getLogger(Test1.class);
		String str = "猫";
		log.info("あれは{}です", str); 
		//00:55:46.097 [main] INFO test1.Test1 -あれは猫です
	}
}

slf4jのログを出力する場合は、10行目が必要ですが7行目の@Slf4jアノテーションによって不要になります。結果として記述量が減ります。
12行目は、「log」を指定する必要があります。

 

@Getterと@Setter (getterとsetter)

getterとsetterのみ指定する場合です。

package test1;

import lombok.Getter;
import lombok.Setter;

public class Product {
	@Getter
	@Setter
	private String id;
    private String name;
    private int price;
}

アノテーションの直下の項目のみが有効になります。

アウトラインを見ると「id」のgetterとsetterがあります。

 

@AllArgsConstructor (全項目でコンストラクタ)

@AllArgsConstructorは、全項目のコンストラクタを生成します。

package test1;

import lombok.AllArgsConstructor;

@AllArgsConstructor
public class Product {
	private String id;
    private String name;
    private int price;
}

アウトラインを見るとコンストラクタがあります。

→newするときは、全項目の指定が必要です。
例:Product product = new Product( 1 , "apple", 100 );

@AllArgsConstructorは、@NoArgsConstructorとの併用も可能です。
その場合コンストラクタは2つになります。

 

@NoArgsConstructor (デフォルトコンストラクタ)

@NoArgsConstructorは、デフォルトコンストラクタを生成します。

package test1;

import lombok.NoArgsConstructor;

@NoArgsConstructor
public class Product {
	private String id;
    private String name;
    private int price;
}

アウトラインを見るとデフォルトコンストラクタがあります。

→newするときは、項目の指定が不要です。
例:Product product = new Product( );

@NoArgsConstructorは、@AllArgsConstructorとの併用も可能です。
その場合コンストラクタは2つになります。

 

@RequiredArgsConstructor (finalがある項目でコンストラクタ)

@RequiredArgsConstructorは、finalがある項目でコンストラクタを生成します。

package test1;

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class Product {
    private long id;
    private String name;
    private final int price;
}

アウトラインを見るとコンストラクタの引数はfinalがあるintのみです。

→newするときは、finalがある項目の指定が必要です。
例:Product product = new Product( 1 );

 

@EqualsAndHashCode(equalsメソッドとhashcodeメソッド)

@EqualsAndHashCodeはequalsメソッドとhashcodeメソッドを生成します。

package test1;

import lombok.EqualsAndHashCode;

@EqualsAndHashCode
public class Test1 {
	private String name;
	private int price;	
}

@EqualsAndHashCode(callSuper = true)とした場合は対象を親クラスまで広げます。

関連の記事

Eclipse getterとsetterを自動で作成する方法

△上に戻る