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;
레퍼런스
반응형
'Java > 자바 API' 카테고리의 다른 글
자바 CountDownLatch란? (0) | 2022.01.03 |
---|---|
자바 스트링 풀에 대해 쉽게 이해하기 (0) | 2021.12.25 |
자바 WeakMap 쉽게 알아보기 (0) | 2021.12.23 |