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/