특징
String s = null;
System.out.println(s.length()); //여기서 NPE(NullPointerException)
대표적인 상황
메서드 호출
obj.method(); //obj가 null이면 NPE
맴버 변수 접근
obj.field; // obj가 null이면 NPE
배열
int [] arr = null
int len =arr.length; //NPE
언박싱
integer num = null;
int n = num; //null을 int로 바꾸려다 NPE
장점
단점
이러한 예외를 피하는 습관
초기화 습관을 들이기
String s="";
List<String> list = new ArrayList<>();
Optional 활용
Optional<String> opt = Optional.ofNullable(s);
opt.ifPresent(val -> System.out.println(val.length()));
명확한 null 체크
if(obj !=null){
obj.doSomething();
}
@NonNull, @Nullable 어노테이션으로 IDE 경고 활용
예시
public class NpeExample{
public static void main(String[] args){
String name = null;
try{
System.out.println(name.toUpperCase()); //여기스 NPE
} catch (NullPointerException){
System.out.println("널 참조 발생:" + e.getMessage());
e.printStackTrace();
}
}
}