Lombok でできること確認します。( @Data 再び)

2021年5月6日

本日は Lombok の @Data について投稿します。

実はすごい機能でした!

先日 STSでLombok の威力を試してみましたにて @Data のアノテーションついて投稿しました。
この時は「アクセサ作るのね」程度の認識たったのですが実はすごいらしいです。

ごった煮

@Data は アクセサの機能を提供する以外にも以下の機能を提供するそうです。

  • @ToString
  • @RequiredArgsConstructor
  • @EqualsAndHashCode

この @Data 一つでなんとこれらの機能が一度に手に入るというから驚きです😳

Lombok でできること確認します。( @ToString )

Lombok でできること確認します。( @RequiredArgsConstructor )と 定数

Lombok でできること確認します。( @EqualsAndHashCode )

 

サクッとやってみた

package com.example.demo;

import lombok.Data;

@Data
public class HogeLombok {
	private int age;
	private final String name;
}
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
		
		// インスタンス化!
		HogeLombok v01 = new HogeLombok("太郎");
		v01.setAge(20);
		HogeLombok v02 = new HogeLombok("太郎");
		v02.setAge(20);
		
		System.out.println("v01 と v02 は" + (v01.equals(v02) ? "同じ人" : "違う人"));
		System.out.println("v01 " + v01);
		System.out.println("v02 " + v02);
	}
}

 

確認

今までの総まとめのような感じですね。
コンストラクタはnameが必須(@RequiredArgsConstructor)でv01とv02は同一人物として判定され(@EqualsAndHashCode)、
v01,v02ともにageとnameの値が出力されています(@ToString)

まとめ

@Data さえあればほかのアノテーションを1つずつ使わなくてもいいから楽でいいですよね!
ただどんな機能を提供しているのかを把握して使用することは大事なのでしっかりと覚えておきたいと思います😊

 

今日はここまで!