Lombok의 @Builder를 사용해 빌더 패턴을 구현할 때, 특정 필드를 반드시 입력하도록 하는 필수 필드로 만들 수 있다.
방법1. @NonNull 애너테이션 사용하기
import lombok.Builder;
import lombok.NonNull;
@Builder
public class Person {
@NonNull private String name;
@NonNull private Integer age;
private String address;
}
- 위의 코드에서 name과 age 필드는 @NonNull 애너테이션이 붙어 있기 때문에 필수 필드가 된다
- 따라서 Person.builder()를 호출할 때 이러한 필드를 지정하지 않으면 컴파일 오류가 발생함
Person.builder()
.address("123 Main St")
.build();
- 위의 코드에서 name과 age 필드를 지정하지 않았기 때문에 컴파일 오류가 발생한다
방법2. builderMethodName 옵션 사용하기
@Builder(builderMethodName = "myBuilder") // 기존에 정의된 builder를 myBuilder로 변경
public class Person {
private String name;
private Integer age;
private String address;
public static PersonBuilder builder(String name, Integer age) {
return myBuilder().name(name).age(age);
}
}
- 두 번재 방법으로는 builder() 메서드를 Override하는 방법이 있다.
- @Builder(builderMethodName = "myBuilder")와 같이 builderMethodName 옵션을 사용하여 기존에 정의된 빌더 메서드의 이름을 변경하고(기존의 builder()를 myBuilder()로 변경), builder() 메서드를 직접 재정의한다
Person.builder("test_name", 99) // builder의 파라미터로 반드시 전달해야 컴파일 에러가 안생김
.address(55)
.build();
- 위의 코드에서 builder()에 name과 age를 전달하지 않으면 컴파일 오류가 발생한다
'Back-End > Java' 카테고리의 다른 글
[Java] JavaFX WebView에서 Axios, fetch 사용시 서버로 Body를 전달하지 못하는 문제 (0) | 2023.03.28 |
---|---|
[Java] Java Array와 Hash의 데이터 접근/삽입 속도 비교 (0) | 2022.03.06 |
[Java] JUnit5 기본 Annotation (0) | 2022.03.03 |
[Java] Process & Thread 개념 (0) | 2022.02.21 |
[Java] Java에서 외부 jar 실행 후 출력되는 결과 가져오기 (0) | 2022.02.15 |