728x90
반응형
🙄서론
for문을 돌리는 List를 어디선가 받아와서 사용할 때
null인 경우가 있을수도 있기 때문에 예외처리는 필수적으로 해주어야 한다.
(물론 NULL이 처음부터 발생하지 않게 해주는 것도 중요하다.)
내가 하던 방식이 비효율적으로 느껴졌고, 다른사람들은 어떻게 null 체크 하는지에 궁금증이 생겨서
알아보게 된 걸 기록해본다.
😉본론
AS-IS
기존 내가 null 체크 했던 방식들
if(productionList != null) {
for (String production : productionList) {
// 로직구현
}
} else {
// 예외처리
}
if(productionList == null) {
return ; // or 예외처리
}
for (String production : productionList) {
// 로직구현
}
이렇게 if문을 추가하게 되면서 블록을 생성하게 되고, 무언가를 더 해주어야한다.
물론 null 일 때 예외처리를 해야하는 경우에는 이렇게 해야하는 것이 맞지만
null이면 그냥 for문을 실행 안 해도 상관이 없을 때에는 굳이.. 라는 생각이 들었다.
TO-BE
org.apache.commons.collections4
에서 제공해주는 ListUtils.emptyIfNull() 을 통해 우린 쉽게 null 예외처리를 할 수 있다.
for (String production : ListUtils.emptyIfNull(productionList)) {
// 로직구현
}
내부로직
간단하게 list가 null일 시 emptyList()를 리턴시켜준다.
이는 비어있는 list이기에 for문에서도 에러없이 잘 작동한다.
😎결론
둘 중 어느 것만 무조건 사용해라. 이건 없다.
null인 경우 예외처리를 해주어야할 때에는 첫 번째 방식을 통해 해줄 수 있는 것이며,
그게 아니고 null일 시 for문만 실행 안하고 싶을 때에는 두번 째 방법을 선택하는 것이 효율적일 것이다.
참고 사이트
https://stackoverflow.com/questions/6077909/is-there-a-way-to-avoid-null-check-before-the-for-each-loop-iteration-starts#
https://stackoverflow.com/questions/2250031/null-check-in-an-enhanced-for-loop
728x90
반응형
'JVM > Java' 카테고리의 다른 글
[Java] Random보단 SecureRandom 를 사용하자. (2) | 2021.06.06 |
---|---|
[Java]Collections.emptyList() vs. new instance 어떤 차이가 있을까? (0) | 2021.06.06 |
[Java] List Null 체크 하는 방법들 (0) | 2021.05.30 |
[Java] 자바10부터 나온 var (0) | 2021.05.16 |
[Java] Optional – orElse() vs orElseGet() 차이점 알고 쓰자. (0) | 2021.05.16 |