카테고리 없음

Lombok SuperBuilder에서 @Builder.Default로 필드 기본값 유지하기

OJR 2025. 5. 12. 14:07

 

 

  • 문제:
    @SuperBuilder 사용 시 필드에 직접 쓴 초기값(initializer)이 무시되어, 빌더로 생성하면 null 또는 기본형 값(0)이 됩니다.
  • 원인:
    Lombok 빌더는 “사용자가 설정한 필드”만 객체에 할당하고, 나머지는 아예 건너뛰기 때문입니다.
  • 해결:
    @Builder.Default를 초기값 필드 위에 붙여 두면, 빌더에서 값을 명시하지 않아도 선언된 초기화자를 실행해 줍니다.

 

`

@SuperBuilder
public class User {
  @Builder.Default
  private String name = "Anonymous";
  @Builder.Default
  private int    age  = 20;
}

User u = User.builder().build();
System.out.println(u.getName()); // Anonymous
System.out.println(u.getAge());  // 20

 

이처럼 @Builder.Default만 추가하면 빌더 생성 시에도 항상 기본값이 보장됩니다.