자바를 하면서 느끼는건데….NPE 가 너무 킹 받는다.. 내가 자주 사용하던 언어인 PHP에서는 NPE 가 자주 발생하지 않았는데, 자바에서는 어떻게 처리해줘야지 싶어서 찾아봤는데, optional 이라는 클래스가 있었다.
Java8 에서 NPE 를 방지할 수 있게 도와주는 클래스이다. Optional는 null이 올 수 있는 값을 감싸주는 Wrapper 클래스이다. 값을 Wrapping 하고 다시 풀고 null일 경우 대체하는 함수를 호출하는 등의 오버헤드가 있어 잘못 사용하게 되면 시스템 성능이 저하되게 된다. 때문에 메소드의 반환값이 절대 null이 아니면 Optional 사용을 권하지 않는다.
Optional 은 wrapper 클래스이기 때문에 값이 없을 수도 있다. 이때는 Optional.empty()
로 생성이 가능하다.
Optional<String> optional = Optional.empty();
어떤 데이터가 절대 null이 아니라면 Optional.of()
로 생성이 가능하다.
Optional<String> optional = Optional.of(24);
어떤 데이터가 null이 올수도 있고 아닐 수도 있는 경우에는 Optional.ofNullable
로 생성할 수 있다. 만약 null이 올 경우에는 orElse
또는 orElseGet
으로 사용해볼 수 있다.