기존에 생성자 방식으로 개발을 하다가 클린코드에 관한 관심이 생기고 공부하면서 빌더패턴을 사용하면 얻을 수 있는 장점들을 보고 빌더패턴으로 개발을 하면서 발견했던 문제이다.
@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를 추가해주면 빌드시에 값을 지정해주지 않아도 빈 배열이 잘 들어간다.