이 optional은 언제 사용하는가? 바로 찾고자하는 값이 null일때 예외처리로 주로 사용한다.
그럼 이 Optional은 무엇인가?
Wrapper 클래스
이다.public final class Optional<T> {
private static final Optional<?> EMPTY = new Optional<>();
private final T value;
private Optional() {
this.value = null;
}
...
}
Optional.ofNullbale
로 생성할 수 있다. 그리고 이후에 orElse
또는 orElseGet
메소드를 이용해서 값이 없는 경우라도 안전하게 값을 가져올 수 있다.List<String> nameList = Optional.ofNullable(getNames())
.orElseGet(() -> new ArrayList<>());
public String findPostCode() {
String result = user.map(UserVO::getAddress)
.map(Address::getPostCode)
.orElse("우편번호 없음");
}
Optional<String> nameOpt = Optional.ofNullable(getName());
String result = nameOpt.orElseThrow(CustomUpperCaseExcpetion::new)
.toUpperCase();
orElse
파라미터로 값을 필요로한다.
값이 미리 존재하는 경우에 사용한다.
orElseGet
파라미터로 함수(함수형 인터페이스)를 필요로 한다.
값이 미리 존재하지 않는 거의 대부분의 경우에 orElseGet을 사용하면 된다.