Java Optional의 메소드
Contents
Java 8부터 Java를 null safe하게 사용할 수 있게 해주는 Optional의 메소드에 대해 정리해봤다.
https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html
객체를 Optional로 래핑
of와 ofNullable을 사용한다.
of는 지정된 null이 아닌 객체를 optional로 래핑한다.ofNullable은 지정된 null일 수도 있는 객체를 optional로 래핑한다.
때문에, 객체가 담고 있는 값이 non-null이라고 확신할 수 있는 상황이 아니라면 ofNullable을 사용하는 것이 옳다.
Optional Wrapper Check
Optional 객체가 담고 있는 값이 null인지 체크하고, 그에 따른 분기를 히기 위해서는 isPresent, ifPresent를 사용한다.
isPresent는 Optional 래퍼 객체가 값을 가지고 있다면 true, null이라면 false를 반환한다.ifPresent는 Optional 래퍼 객체가 값을 가지고 있다면 파라미터로 입력된Consumer계산식을 평가한다. (함수형 프로그래밍) null이라면 아무것도 하지 않는다.
Optional 안에 값이 없을 때의 처리
orElse, orElseGet, orElseThrow 를 사용한다.
orElse(someObject)는 값이 존재한다면 리턴하고, 값이 존재하지 않는다면someObject를 리턴한다.orElseGet(someExpression)은 값이 존재한다면 리턴하고, 값이 존재하지 않는다면someExpression을 계산한 결과를 리턴한다.orElseThrow(someThrowable)는 값이 존재한다면 리턴하고, 값이 존재하지 않는다면someThrowable예외 객체를 throw한다.
번외 (메서드 네이밍에서 get과 find의 차이)
- get은 null 값이 없을 것으로 예상되는, 보다 빠른 데이터 read에서 사용한다.
- find는 null 값이 있을 수도 있는, 보다 느린 데이터 read에서 사용한다.