'MisplacedNullCheck'에 해당되는 글 1건

MisplacedNullCheck

우선순위 : 3

 

다음의 샘플 코드의 if문 내에 있는 null 체크 구문은 모두 잘못된 위치이다. 이 구문들은 만일 a가 null이라면

NullPointerException이 발생한다.


샘플코드1


샘플코드2


부연 설명

논리 연산에서 &&와 ||는 연산자 앞에 있는 조건을 먼저 확인하고 그 결과에 따라 연산자 뒤에 있는 조건을

확인할 지 말 지 결정을 하게 된다. 즉 어떤 상황이건 a.equals(baz)를 먼저 수행하게 되는데 만일 a가 null이라면

null인 객체로부터 equals라는 메서드를 호출하였으니 NullPointerException이 발생하는 것은 당연하다.

참고로 &&는 선행 구문이 거짓이면 뒤의 구문을 확인하지 않고 진행되며 ||의 경우 반대로 선행 구문이 참인 경우

뒤에 구문은 확인하지 않고 진행된다.

 

즉, if (a != null && a.equals(baz))로 표현한다면 만일 a가 null인 경우 a != null은 거짓이 되고 a.equals(baz)는

수행되지 않으므로 NullPointerException이 발생하지 않는다. ||의 경우도 마찬가지~

블로그 이미지

마즈다

이미 마흔을 넘어섰지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^