Optional

bird.j·2021년 4월 10일
0

java

목록 보기
9/10

📌 Optional이란 NullPointerException을 피하기 위한 수단이다.


NullPointerException을 피하기 위해서는 null을 검사하는 로직을 추가해야하는데 null 검사를 해야하는 변수가 많은 경우에 코드가 복잡해지고 로직이 번거롭다.


Java8에서는 Optional<T> 클래스를 사용해 NPE를 방지할 수 있도록 도와준다. 이는 null이 올 수 있는 값을 감싸는 wrapper 클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다.
그리고 orElse 또는 orElseGet메소드를 이용해서 값이 없는 경우라도 안전하게 값을 가져올 수 있다.


그러나 Optional은 값을 wrapping하고, 다시 풀고,
null일 경우에는 대체하는 함수를 호출하는 등의 오버헤드가 있으므로 성능이 저하될 수 있다.


그러므로 메소드의 반환 값이 절대 null이 아니라면 Optional을 사용하지 않는 것이 성능저하가 적다.

String name = getName();
String result = "";
 
try {
  result = name.toUpperCase();
} catch (NullPointerException e) {
  throw new CustomUpperCaseException();
}

이를 Optional을 활용하면 다음과 같다.

Optional<String> nameOpt = Optional.ofNullable(getName());
String result = nameOpt.orElseThrow(CustomUpperCaseExcpetion::new).toUpperCase();

참고 | [Java] Optional이란?

0개의 댓글