문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 마지막 판 양쪽 다음 판 | ||
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:// | * [[https:// | ||
- | * see [[java: | ||
===== 주의점 ===== | ===== 주의점 ===== | ||
+ | * see [[java: | ||
* 클래스에 붙이지 말고, 항상 명시적 생성자나 메소드에 붙여야 한다. | * 클래스에 붙이지 말고, 항상 명시적 생성자나 메소드에 붙여야 한다. | ||
+ | |||
+ | ===== 기본값 ===== | ||
+ | * 지정하지 않으면 '' | ||
+ | * '' | ||
+ | * 생성자나 메소드에서 명시적으로 기본값을 지정할 것. | ||
+ | |||
+ | ===== @Singluar ===== | ||
+ | * 원칙적으로 '' | ||
+ | <code java> | ||
+ | @Singular(" | ||
+ | |||
+ | // axis(Line line) 메소드가 생김 | ||
+ | </ | ||
+ | ===== final 혹은 수정 불가 클래스에 대한 builder ===== | ||
+ | * 수정할 수 없는 클래스가 있을 때 이에 대한 builder 를 별도 클래스에서 메소드로 빼서 만들 수 있다. | ||
+ | |||
+ | <code java> | ||
+ | // 소스 제어권이 없는 클래스 | ||
+ | @Value | ||
+ | final class ImmutableClient { | ||
+ | private int id; | ||
+ | private String name; | ||
+ | } | ||
+ | |||
+ | // 별도의 빌드 전용 클래스와 메소드 | ||
+ | class ClientBuilder { | ||
+ | |||
+ | @Builder(builderMethodName = " | ||
+ | public static ImmutableClient newClient(int id, String name) { | ||
+ | return new ImmutableClient(id, | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ImmutableClient testImmutableClient = ClientBuilder.builder() | ||
+ | .name(" | ||
+ | .id(1) | ||
+ | .build(); | ||
+ | assertThat(testImmutableClient.getName()) | ||
+ | .isEqualTo(" | ||
+ | assertThat(testImmutableClient.getId()) | ||
+ | .isEqualTo(1); | ||
+ | |||
+ | </ | ||
+ | |||
==== 참조 ==== | ==== 참조 ==== |