카테고리 없음
[Java] 메소드 호출할 때 레퍼런스 변수에서 NullPointerException이 발생하는 것을 방지
한길(One Way)
2023. 2. 27. 22:12
클래스 안에 다음과 같은 check 메서드가 있다고 가정해 보자. isExist와 같이 여부를 확인하기 위해 일반적으로 많이 사용하는 유형의 메서드이다.
public boolean check()
{
boolean isCheck = false;
// (중략)
return isCheck;
}
다음의 문장에서와 같이 객체에 있는 check 메서드의 결괏값에 따라 if 문을 수행하려는 경우 정상적인 경우는 true/false를 리턴하여 잘 수행되지만 레퍼런스변수 obj가 null일 경우에 NullPointerException이 발생한다.
if(obj.check())
{
// 수행문
}
따라서 아래와 같이 먼저 레퍼런스변수가 null 인지 비교를 하는 조건을 &&(And)로 연결하면 null 인 경우는 false 이므로 그냥 지나가고 null 이 아닌 경우 && 뒤의 조건을 확인하므로 obj.check()를 정상적으로 수행할 수 있다.
if(obj != null && obj.check())
{
// 수행문
}
그래서 레퍼런스 변수는 항상 null 일 수 도 있다는 가정에서 방어적인 코딩을 하는 것이 좋다.
728x90