Objects.requireNonNull(T obj)
- 오브젝트가
null
이라면 NullPointerException
을 던진다.
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
사용 이유
- 어차피
null
에서 메서드를 호출하면 NullPointerException
은 던져질텐데 왜 사용할까?
빠른 실패
- 아래는
/register
에서 name
이라는 파라미터를 받아서 포맷팅을 한 후 저장하는 코드의 예시이다.
- 만일
register()
메서드에 Objects.requireNonNull()
이 있었다면, register()
에서 에러가 터졌을 것이다.
register()
에 아무런 null
체크가 없다면 formatName()
메서드까지 도달해서야 NullPointerException
이 던져진다.
- 이렇게 문제를 깊숙한 스택까지 가져가지 않고 빠르게 받아보는 것은 디버깅에 큰 도움이 된다.
@Controller("/register")
void register(@Param String name) {
// Objects.requireNonNull(name); // 있고 없고의 차이는?
passportService.save(name);
}
void save(String name) {
formatName(name);
saveInDb(name);
}
String formatName(String name) {
return name.toUpperCase();
}
가독성
Objects.requireNonNull(str);
if (str == null) {
throw new NullPointerException();
}
return str;
레퍼런스
https://hudi.blog/java-requirenonnull/