프로젝트를 진행하면서 null과 isEmpty()에 대하여 생각해 보는 시간을 갖게 되었다.
간단히 작성하면 아래와 같은 Dto에서 imageUrl들을 받아오는 부분과 Dto를 인자로 사용하여 DB에 저장하는 코드이다.
@Getter
public class Request {
private List<String> imageUrl;
}
if (request.getImageUrl() != null && !request.getImageUrl().isEmpty()) {
대충 저장하는 코드~~
}
코드리뷰중 이러한 부분을 발견하여
!request.getImageUrl().isEmpty()
해당 부분만 조건으로 사용하면 안되나 하며 찾아보았는데 null인 객체에 .isEmpty()를 사용하면 NPE가 발생하였다.
imageUrl이 null일 경우에 request.getImageUrl() != null의 결과로 false를 반환하여 !request.getImageUrl().isEmpty()를 실행하기 이전에 if문의 결과가 false가 되어 !request.getImageUrl().isEmpty() 해당 코드를 실행시키지 않도록 하여 NPE의 발생을 막는 코드였다.
프로젝트를 진행하면서 기초적인 공부의 필요성을 느끼는중이다..