반응형
NullPointerException은 객체가 null일 때,
해당 객체의 메서드를 호출하거나 속성에 접근하려고 할 때 발생합니다.
이 오류 메시지에서 "java.util.List.add(Object)"는 List 객체의 add 메서드를 호출하려고 했으나,
해당 List 객체가 null이라는 것을 의미합니다.
NullPointerException 발생 원인
- 객체가 초기화되지 않음: 객체를 생성하지 않고 사용하려고 할 때
- 메서드의 반환값이 null: 메서드가 null을 반환하는 경우
- 배열 요소가 null: 배열의 특정 요소가 null인 경우
예제 코드
import java.util.List;
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
List<String> myList = null;
// 이 줄에서 NullPointerException 발생
myList.add("Hello");
}
}
위 코드에서 myList는 null로 초기화되었습니다.
myList.add("Hello")를 호출하려고 할 때,
myList가 어떤 리스트도 가리키고 있지 않기 때문에 NullPointerException이 발생합니다.
오류 원인
- 리스트 초기화 안 함: List 객체를 생성하지 않고 접근했기 때문에 발생합니다.
- 메서드 인수로 null 전달: 메서드에서 List를 인수로 받아서 사용하려고 할 때 인수가 null인 경우
예외 방지 방법
#1 리스트 초기화: 사용하기 전에 List 객체를 반드시 초기화해야 합니다.
List<String> myList = new ArrayList<>();
myList.add("Hello"); // 정상 동작
#2 null 체크: add 메서드를 호출하기 전에 null인지 확인합니다.
if (myList != null) {
myList.add("Hello");
} else {
System.out.println("myList는 null입니다.");
}
#3 옵셔널 사용: Optional 클래스를 사용하여 null을 안전하게 처리할 수 있습니다.
import java.util.Optional;
import java.util.ArrayList;
import java.util.List;
public class OptionalExample {
public static void main(String[] args) {
List<String> myList = null;
Optional<List<String>> optionalList = Optional.ofNullable(myList);
optionalList.ifPresent(list -> list.add("Hello")); // 값이 존재할 때만 추가
}
}
#4 예외 처리: 예외 발생 시 적절한 처리를 할 수 있습니다.
try {
myList.add("Hello");
} catch (NullPointerException e) {
System.out.println("NullPointerException 발생: myList는 null입니다.");
}
결론
NullPointerException은 객체가 null일 때 메서드를 호출하려고 할 때 발생합니다.
이를 방지하기 위해 객체를 적절히 초기화하고, null 체크를 통해 안전하게 코드를 작성하는 것이 중요합니다.
이러한 방법들을 통해 더 안정적이고 오류 없는 Java 프로그램을 작성할 수 있습니다.
반응형
'IT · 인터넷' 카테고리의 다른 글
[Java] Socket 통신 (0) | 2025.01.24 |
---|---|
엑셀에서 알아두면 유용한 함수 10가지 (0) | 2025.01.22 |
엑셀 맞춤법 검사 기능 사용방법 및 끄는 방법 (0) | 2025.01.21 |
[JavaScript] Promise 비동기 처리 (0) | 2025.01.11 |
검색엔진 SEO란? (0) | 2025.01.07 |