문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
|
java:lombok:builder [2022/01/28 17:20] kwon37xi 만듦 |
java:lombok:builder [2022/01/28 17:29] (현재) kwon37xi |
||
|---|---|---|---|
| 줄 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); | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ===== 참조 | ||
| * [[https:// | * [[https:// | ||