사용자 도구

사이트 도구


java:lombok:builder

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
마지막 판 양쪽 다음 판
java:lombok:builder [2022/01/28 17:20]
kwon37xi 만듦
java:lombok:builder [2022/01/28 17:29]
kwon37xi [final 혹은 수정 불가 클래스에 대한 builder]
줄 1: 줄 1:
 ====== lombok @Builder ====== ====== lombok @Builder ======
   * [[https://projectlombok.org/features/Builder|@Builder]]   * [[https://projectlombok.org/features/Builder|@Builder]]
-  * see [[java:lombok:pitfall|Lombok 사용상 주의점(Pitfall)]] 
  
 ===== 주의점 ===== ===== 주의점 =====
 +  * see [[java:lombok:pitfall|Lombok 사용상 주의점(Pitfall)]]
   * 클래스에 붙이지 말고, 항상 명시적 생성자나 메소드에 붙여야 한다.   * 클래스에 붙이지 말고, 항상 명시적 생성자나 메소드에 붙여야 한다.
 +
 +===== 기본값 =====
 +  * 지정하지 않으면 ''null'', ''0'', ''false'' 가 기본이다.
 +  * ''@Builder.Default'' 를 필드에 붙여 기본값을 지정할 수 있는데, 사용하지 않기를 권함. 이 경우는 class에 붙일때만 작동할 것으로 보임.
 +  * 생성자나 메소드에서 명시적으로 기본값을 지정할 것.
 +
 +===== @Singluar =====
 +  * 원칙적으로 ''setter'' 기반으로 builder가 만들어지는데 Java Collections와 [[java:guava|Guava]] Collections 에 대해서 ''@Singluar'' 어노테이션을 주면 값을 한개씩 혹은 여러개를 추가하는 build method와 전체 clear 메소드를 만들어줌.
 +<code java>
 +@Singular("axis") List<Line> axes;
 +
 +// axis(Line line) 메소드가 생김
 +</code>
 +===== final 혹은 수정 불가 클래스에 대한 builder =====
 +  * 수정할 수 없는 클래스가 있을 때 이에 대한 builder 를 별도 클래스에서 메소드로 빼서 만들 수 있다.
 +
 +<code java>
 +// 소스 제어권이 없는 클래스
 +@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);
 +
 +</code>
 +
  
 ==== 참조 ==== ==== 참조 ====
java/lombok/builder.txt · 마지막으로 수정됨: 2022/01/28 17:29 저자 kwon37xi