JVM/Java

[Java]for문 List를 Null 체크하는 방법

Hyo Kim 2021. 6. 6. 00:01
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
반응형