본문 바로가기
  • SDXL 1.0 + 한복 LoRA
  • SDXL 1.0 + 한복 LoRA
Development/JAVA

[디비 파기 | PMD] MisplacedNullCheck

by 마즈다 2016. 2. 28.
반응형

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이 발생하지 않는다. ||의 경우도 마찬가지~

반응형