NPE 문제 해결

컴개론·2024년 8월 2일

이슈 정의

Java에서 NPE(Null Pointer Exception) 문제는 객체가 초기화되지 않은 상태에서 해당 객체의 메서드나 필드에 접근할 때 발생한다. 특히, 초기화되지 않은 List 필드에 접근할 때 자주 발생한다. 이 블로그 포스트에서는 Java의 ArrayNPE 문제를 다루고, 이를 해결하는 방법을 제시한다.

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<String> list 필드는 선언되었지만 초기화되지 않았다. 따라서 addItem 메서드에서 list.add(item)을 호출할 때 NPE가 발생할 수 있다.

원인 추론

NPE 문제는 주로 객체가 초기화되지 않은 상태에서 해당 객체의 메서드나 필드에 접근할 때 발생한다. 위 예제에서는 list 필드가 초기화되지 않았기 때문에 list.add(item) 호출 시 NPE가 발생한다. 이를 해결하기 위해서는 list 필드를 초기화해야 한다.

해결 방법

Java의 ArrayNPE 문제는 초기화되지 않은 List 필드에 접근할 때 발생한다. 이를 해결하기 위해서는 List 필드를 ArrayList와 같은 List의 구현 클래스의 인스턴스로 초기화하면 된다.

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');
    }
}

위 예제와 같이 new ArrayList<>();를 통해 List 필드를 초기화하면 ArrayNPE 문제를 예방할 수 있다. 초기화된 list 필드는 addItem 메서드에서 안전하게 접근할 수 있다.

참고 자료

0개의 댓글