Java NPE 문제

컴개론·2024년 8월 1일

이슈 정의

Java에서 NPE(NullPointerException) 문제는 주로 초기화되지 않은 필드를 접근할 때 발생한다. 특히, List와 같은 컬렉션 필드를 초기화하지 않고 접근할 경우 NPE가 발생할 수 있다.

issue example code

public class Example {
    private ArrayList<String> list;

    public void addItem(String item) {
        list.add(item); // 여기서 NPE 발생 가능
    }

    public static void main(String[] args) {
        Example example = new Example();
        example.addItem('Hello');
    }
}

위 코드에서 'ArrayList list' 필드는 선언되었지만 초기화되지 않았다. 이로 인해 addItem 메서드에서 NPE가 발생할 수 있다.

원인 추론

NPE 문제는 주로 초기화되지 않은 필드를 접근할 때 발생한다. 위 코드에서는 'list' 필드가 초기화되지 않았기 때문에 addItem 메서드에서 list.add(item) 호출 시 NPE가 발생한다. 이 문제를 해결하기 위해서는 'list' 필드를 초기화해야 한다. 디버깅 툴을 활용하여 필드가 초기화되지 않았음을 확인할 수 있다.

해결 방법

'list' 필드를 초기화하여 NPE 문제를 해결할 수 있다. 이를 위해 'list' 필드를 ArrayList의 인스턴스로 초기화하면 된다.

solution example code

import java.util.ArrayList;

public class Example {
    private ArrayList<String> list = new ArrayList<>(); // 초기화

    public void addItem(String item) {
        list.add(item); // NPE 발생하지 않음
    }

    public static void main(String[] args) {
        Example example = new Example();
        example.addItem('Hello');
    }
}

위 예제 코드에서 보듯이, 'list' 필드를 new ArrayList<>();로 초기화함으로써 NPE 문제를 방지할 수 있다. 초기화된 필드를 사용하면 NPE가 발생하지 않는다.

0개의 댓글