목차

    개요

    코드 구현 중, 상속 관계의 클래스에 @Builder를 적용해야 하는 일이 있었습니다. 평소처럼 @Builder 사용하였지만 상속받은 필드는 빌더의 요소로 나타나지 않는 이슈가 있어 관련 내용을 찾게 되었습니다.

     

    @SuperBuilder를 사용하면 된다.

    @SuperBuilder는 @Builder 사용 때, 상속받은 필드를 빌더에서 사용하지 못하는 등의 제한을 해결하고자 만들어졌습니다. @SuperBuilder를 사용하면 상속받은 필드도 빌더에서 사용 할 수 있게 됩니다.

    주의 할 점은 부모와 자식 클래스 양쪽 모두 @SuperBuilder 어노테이션을 추가해주어야 한다는 것 입니다.

     

    @SuperBuilder 사용 예시

    - 부모 클래스 Parent

    @SuperBuilder
    public class Parent {
        private String parentField;
    }

     

    - 자식 클래스 Child

    @SuperBuilder
    public class Child extends Parent {
        private String childField;
    }

     

    - 최종 예제 코드

    Child child = Child.builder()
                    .parentField("parent")
                    .childField("child")
                    .build();