
: 복잡한 객체를 생성할 때 가독성과 유연성을 높여주는 설계 패턴
@NonNull 활용)@Builder 어노테이션Lombok의 @Builder는 Builder 패턴을 자동으로 구현해주는 어노테이션입니다.
클래스명.builder() 메서드 제공
체이닝 방식으로 각 필드값 설정
build() 메서드로 객체 생성
@NonNull 필드를 빌더에서 반드시 지정해야 함
NullPointerException 발생Customer.builder() 호출 시 내부적으로 CustomerBuilder 객체 생성
id(), pw(), job() 메서드를 체이닝으로 호출하며 값 설정
build() 호출 시 최종 객체 생성
// Customer.java
package step04.builder;
import lombok.Builder;
import lombok.NonNull;
@Builder
class Customer {
@NonNull
String id; // 반드시 초기화해야 하는 필드
int pw;
String job;
}
// BuilderUseLab.java
public class BuilderUseLab {
public static void main(String[] args) {
// 필수값 미지정 시 예외 발생
// Customer c = Customer.builder().pw(0).build(); // 컴파일 경고, 런타임 예외
// id만 초기화
Customer c1 = Customer.builder().id("tester1").build();
System.out.println(c1.id + " " + c1.pw + " " + c1.job);
// id, pw 초기화
Customer c2 = Customer.builder().id("tester2").pw(22).build();
System.out.println(c2.id + " " + c2.pw + " " + c2.job);
// id, pw, job 초기화
Customer c3 = Customer.builder().id("tester3").pw(33).job("Student").build();
System.out.println(c3.id + " " + c3.pw + " " + c3.job);
// id, job 초기화
Customer c4 = Customer.builder().id("tester4").job("Student").build();
System.out.println(c4.id + " " + c4.pw + " " + c4.job);
}
}
📚 참고자료