[JAVA] 빌더패턴 사용시 문제점

나길진·2024년 1월 23일

기존에 생성자 방식으로 개발을 하다가 클린코드에 관한 관심이 생기고 공부하면서 빌더패턴을 사용하면 얻을 수 있는 장점들을 보고 빌더패턴으로 개발을 하면서 발견했던 문제이다.

문제

@Getter
@Builder
class Team{
	private String name;
	private List<Member> members = new ArrayList<>();
}

이러한 클래스가 있을 때 members에 기본적으로 빈 ArrayList를 지정해 줬기 때문에 빌드할 때 name값만 설정해주면 members에는 비어있는 리스트가 설정되어있을 줄 알았지만 NPE가 발생하고 말았다..

알고보니 빌더를 사용할 때 값을 지정해주지 않으면 null값으로 초기화 된다는 것을 알았다.

해결방법

빌드시에 빈 리스트를 넣어줘도 되지만 매번 귀찮고 까먹을 수 있기 떄문에 항상 기본으로 빈 리스트를 주는 방식을 찾았다.

@Getter
@Builder
class Team{
	private String name;
    
    @Builder.Default
	private List<Member> members = new ArrayList<>();
}

@Builder.Default를 추가해주면 빌드시에 값을 지정해주지 않아도 빈 배열이 잘 들어간다.

profile
백엔드 개발자

0개의 댓글