1. 객체가 초기화되지 않은 경우
객체를 생성하지 않고 해당 객체의 메서드나 변수를 호출하려 할 때 발생하는 에러입니다.
String str = null;
System.out.println(str.length()); // NullPointerException 발생
해결 방법: 객체가 null인지 확인하거나 객체를 초기화해야 합니다.
2. 배열이 초기화되지 않은 경우
배열을 초기화하지 않고 요소에 접근하려 할 때 발생하는 에러입니다.
int[] arr = null;
System.out.println(arr.length); // NullPointerException 발생
해결 방법: 배열을 초기화한 후에 요소에 접근해야 합니다.
3. 컬렉션 요소가 null일 때
컬렉션에 저장된 객체가 null인 경우 해당 요소를 접근할 때 발생할 수 있습니다.
List list = Arrays.asList(null, "Hello");
System.out.println(list.get(0).length()); // NullPointerException 발생
해결 방법: 컬렉션에서 null 여부를 먼저 체크해야 합니다.
4. 메서드 반환값이 null인 경우
메서드가 null을 반환했음에도 이를 확인하지 않고 바로 사용하는 경우 발생할 수 있습니다.
public String getString() {
return null;
}
System.out.println(getString().length()); // NullPointerException 발생
해결 방법: 메서드 반환값을 사용할 때 null인지 확인합니다.
5. 클래스의 정적 변수에 접근할 때
정적 변수가 null일 때 해당 변수에 접근하려 하면 발생합니다.
static String staticVar = null;
System.out.println(staticVar.length()); // NullPointerException 발생
해결 방법: 정적 변수가 null인지 확인 후 접근합니다.
6. Optional 객체 사용하지 않을 때
Java 8에서는 Optional을 사용해 null을 처리할 수 있습니다. 이를 사용하지 않고 null을 처리하지 않으면 에러가 발생할 수 있습니다.
Optional opt = Optional.ofNullable(null);
System.out.println(opt.get()); // NoSuchElementException 발생 가능
해결 방법: Optional을 올바르게 사용하여 null을 처리합니다.
7. synchronized 블록에서 null 객체에 접근할 때
null 객체를 synchronized 블록에서 사용하려 할 때 발생할 수 있습니다.
Object lock = null;
synchronized(lock) {
// NullPointerException 발생
}
해결 방법: synchronized 블록 내에서 사용할 객체가 null이 아닌지 확인합니다.
8. String 메서드 호출 시 null 문자열 처리
문자열이 null인 상태에서 해당 문자열에 메서드를 호출하려 할 때 발생할 수 있습니다.
String str = null;
System.out.println(str.toUpperCase()); // NullPointerException 발생
해결 방법: 문자열이 null인지 체크한 후 메서드를 호출합니다.
9. 생성자에서 초기화되지 않은 객체
생성자에서 객체를 초기화하지 않은 경우, 이후 해당 객체를 사용할 때 NullPointerException이 발생할 수 있습니다.
public class Test {
String str;
public Test() {
// str 초기화 생략
}
}
Test test = new Test();
System.out.println(test.str.length()); // NullPointerException 발생
해결 방법: 생성자에서 필요한 객체를 반드시 초기화합니다.
10. 외부 API 호출 시 반환값이 null인 경우
외부 API나 라이브러리 호출 시 null이 반환될 수 있는 값을 처리하지 않으면 NullPointerException이 발생할 수 있습니다.
String apiResult = externalApiCall();
System.out.println(apiResult.length()); // NullPointerException 발생 가능
해결 방법: 외부 API 호출 후 반환값이 null인지 확인해야 합니다.