설명
예시
public class Person {
private String firstName;
private String lastName;
private int age;
private String phone;
private String address;
private Person(Builder builder) {
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
this.phone = builder.phone;
this.address = builder.address;
}
public static class Builder {
private final String firstName;
private final String lastName;
private int age;
private String phone;
private String address;
public Builder(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder phone(String phone) {
this.phone = phone;
return this;
}
public Builder address(String address) {
this.address = address;
return this;
}
public Person build() {
return new Person(this);
}
}
}
// 사용 예시
Person person = new Person.Builder("John", "Doe")
.age(30)
.phone("123456789")
.address("Street 123")
.build();
📌 @Builder 어노테이션
import lombok.Builder;
@Builder
public class Burger {
private boolean lettuce;
private boolean cheese;
private boolean tomato;
private boolean bacon;
}
// 사용 예시
Burger burger = Burger.builder()
.lettuce(true)
.cheese(true)
.build();
📌 @SuperBuilder 어노테이션
import lombok.experimental.SuperBuilder;
@SuperBuilder
class Parent {
private String parentName;
}
@SuperBuilder
class Child extends Parent {
private String childName;
}
public class Test {
public static void main(String[] args) {
Child child = Child.builder()
.parentName("John")
.childName("Doe")
.build();
}
}
📌 @Builder와 @SuperBuilder의 차이