시작이 반

[Java] Lombok 본문

Programming/Java

[Java] Lombok

G_Gi 2021. 1. 25. 00:33
SMALL

Lombok

Java 라이브러리중 하나로 반복적으로 생성해야 하는 코드들을 어노테이션기반으로 자동 생성해주는 라이브러리

 

Getter/ Setter

@Getter @Setter
private String name;
user.setName("test");
String userName = user.getName();

필드 레벨이 아닌 클래스 레벨에 @Getter / @Setter을 선언하면 모든 필드에 getter, setter가 생성된다.

 

 

Constructor

@NoArgsConstructor : 파라미터가 없는 기본 생성자 생성

@RequiredArgsConstructor : final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 생성

@AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자 생성

@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class User {
  private Long id;
  @NonNull
  private String username;
  @NonNull
  private String password;
  private int[] scores;
}
User user1 = new User();
User user2 = new User("name", "password");
User user3 = new User(1L, "name", "password", null);

 

 

ToString

클래스명( 필드1명=필드1값, 필드2명=필드2값, ... ) 의 포맷으로 생성

exclude속성으로 제외 필드 설정 가능

@ToString(exclude = "password")
public class User {
  private Long id;
  private String username;
  private String password;
}
User user = new User();
user.setId(1L);
user.setUsername("name");
user.setUsername("password");
System.out.println(user);

User(id=1, username=name)

 

 

@EqualsAndHashCode 

equals()와 hashCode()를 자동생성

equals() : 객체의 값이 같은지 비교

hashCode : 객체의 저장된 주소가 같은지 비교

exclude속성으로 제외 필드 설정 가능

callSuper속성을 통해서 부모 클래스의 필드까지 비교할지 설정 가능

public class test {

	public static void main(String[] args) {
		EqualsAndHashCode_Test();
		System.out.println();
		EqualsAndHashCode_Test2();

	}

	@EqualsAndHashCode(exclude = "value1")
	@Setter
	public static class Lombok1   {

		private String value1;
		private String value2 = "value2";
	}

	@EqualsAndHashCode
	@Setter
	public static class Lombok2   {

		private String value1;
		private String value2 = "value2";
	}

	public static void EqualsAndHashCode_Test() {
		Lombok1 test1 = new Lombok1();
        test1.setValue1("aaaa");
        System.out.println("test1 HashCode - "+ test1.hashCode());

        Lombok1 test2 = new Lombok1();
        test2.setValue1("bbbb");
        System.out.println("test2 HashCode - "+ test2.hashCode());

        System.out.println("result - " + test1.equals(test2)); 

	}
	public static void EqualsAndHashCode_Test2() {

		Lombok2 test1 = new Lombok2();
		test1.setValue1("aaaa");
		System.out.println("test1 HashCode - "+ test1.hashCode()); 

		Lombok2 test2 = new Lombok2();
		test2.setValue1("bbbb");
		System.out.println("test2 HashCode - "+ test2.hashCode()); 

		System.out.println("result - " + test1.equals(test2)); 

	}

}

 

@Data

@Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode을 한꺼번에 설정

@Data
public class User {
  // ...
}

 

 

 

참고 

LIST

'Programming > Java' 카테고리의 다른 글

[Java] 코테 준비 ( 알아야할 것들)  (2) 2021.08.13
[Java] SOLID  (1) 2021.05.10
[Java] Stream  (0) 2021.01.20
[Java] 람다식(Lambda)  (0) 2021.01.20
[Java] Optional  (0) 2021.01.20