소개

NullPointerException은 Java에서 가장 흔한 런타임 오류다. 객체가 null인 상태에서 메서드 호출이나 필드 접근을 시도할 때 발생한다.

오류 내용

Exception in thread "main" java.lang.NullPointerException
    at com.example.MyClass.main(MyClass.java:10)

null인 변수에 .length(), .get() 등을 호출하면 예외가 발생한다.

주요 원인

  • 객체를 생성하지 않고 사용함.
  • 메서드가 null을 반환함.
  • 컬렉션 조회 후 결과를 검증하지 않음.
  • Wrapper 타입 자동 언박싱 시 null 처리 누락.

해결 방법 1: null 검사

if (obj != null) {
    obj.doSomething();
}

예외 발생 우선 차단.

해결 방법 2: Optional 사용

Optional<String> opt = Optional.ofNullable(text);
opt.ifPresent(s -> System.out.println(s.length()));

null 처리를 명시적으로 구현.

해결 방법 3: 올바른 초기화

List<String> list = new ArrayList<>();

필드나 변수는 선언과 동시에 초기화 권장.

해결 방법 4: @NonNull / @Nullable 어노테이션

public void process(@NonNull String input) {  }

IDE와 정적 분석 도구가 컴파일 단계에서 경고 제공.

해결 방법 5: 자동 언박싱 주의

Integer count = getCount();
if (count != null) {
    int c = count;  // 안전 언박싱
}

Wrapper 타입 null 검사 필수.

결론

NullPointerException은 대부분 사전 검사와 올바른 초기화로 예방 가능하다. Optional과 nullability 어노테이션을 적극 활용하자.

Leave a comment