카테고리 없음

[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