사용자 도구

사이트 도구


java:lombok:builder

lombok @Builder

주의점

기본값

  • 지정하지 않으면 null, 0, false 가 기본이다.
  • @Builder.Default 를 필드에 붙여 기본값을 지정할 수 있는데, 사용하지 않기를 권함. 이 경우는 class에 붙일때만 작동할 것으로 보임.
  • 생성자나 메소드에서 명시적으로 기본값을 지정할 것.

@Singluar

  • 원칙적으로 setter 기반으로 builder가 만들어지는데 Java Collections와 Guava Collections 에 대해서 @Singluar 어노테이션을 주면 값을 한개씩 혹은 여러개를 추가하는 build method와 전체 clear 메소드를 만들어줌.
@Singular("axis") List<Line> axes;
 
// axis(Line line) 메소드가 생김

final 혹은 수정 불가 클래스에 대한 builder

  • 수정할 수 없는 클래스가 있을 때 이에 대한 builder 를 별도 클래스에서 메소드로 빼서 만들 수 있다.
// 소스 제어권이 없는 클래스
@Value
final class ImmutableClient {
    private int id;
    private String name;
}
 
// 별도의 빌드 전용 클래스와 메소드
class ClientBuilder {
 
    @Builder(builderMethodName = "builder")
    public static ImmutableClient newClient(int id, String name) {
        return new ImmutableClient(id, name);
    }
}
 
ImmutableClient testImmutableClient = ClientBuilder.builder()
  .name("foo")
  .id(1)
  .build();
assertThat(testImmutableClient.getName())
  .isEqualTo("foo");
assertThat(testImmutableClient.getId())
  .isEqualTo(1);

참조

java/lombok/builder.txt · 마지막으로 수정됨: 2022/01/28 17:29 저자 kwon37xi