Contents
출력 null 값을 직접 다루는 대신 안전하게 처리할 수 있도록 도와주는 컨테이너
코드에서 직접
null
체크 하지 않아도 값 처리 및 예외 처리 가능ofNullable()
:null
여부와 상관없이 Optional 객체 생성. 값이null
이면 비어 있는Optional
객체를 반환.
isPresent()
: Optional 안에 값이 존재하는지 확인. 값이 있으면true
, 없으면false
반환
orElse()
: Optional 값이 없을 경우(default 값) 반환
orElseThrow()
: 값이 없을 경우 지정된 예외를 발생
get()
: Optional 안에 있는 값을 직접 꺼냄 단, 값이 없으면NoSuchElementException
이 발생하므로 사용 시isPresent()
로 확인 후 호출해야 안전
import java.util.Optional;
public class App {
public static void main(String[] args) {
String data1 = null;
Optional<String> op1 = Optional.ofNullable(data1); // null이 가능한
if (op1.isPresent()) {
String r1 = op1.get();
System.out.println("r1 : " + r1); // 실행안됨
}
// 람다 적용하기 -여러개중 람다 인터페이스 이름 존재 시, 적용
String data2 = null;
// null이면 무엇을 공급할건지
// .get 바로 사용불가
String r2 = Optional.ofNullable(data2).orElseGet(() -> "없어");
System.out.println("r2 : " + r2);
String data3 = null;
// 터트리게 설정 -이때 메세지 출력 설정하기
// 값을 찾으면 줌. 값이 없으면(null이니) throw해라
String r3 = Optional.ofNullable(data3).orElseThrow(() -> new RuntimeException("값이 없는데? 조심해 너"));
System.out.println("r3 : " + r3);
}
}
출력

출력 설명
op1.isPresent()
에서 값이 없으므로 아무 작업도 실행되지 않음
orElseGet()
을 사용해 값이 없을 경우"없어"
를 제공해 안전하게 처리- 출력:
r2 : 없어
orElseThrow()
를 사용해 값이 없으므로 RuntimeException을 던짐- 예외 메시지 출력:
"값이 없는데? 조심해 너"
Share article