Optional API

Ahri·2021년 12월 27일
1

JAVA

목록 보기
5/6

인프런의 더자바, JAVA8 강의를 들으며 정리한 내용입니다.

Optional

  • 값 한 개가 있을수도 있고 없을수도 있을때 사용함
  • 주로 결과값이 NULL 가능성이 있을때 사용
  • 리턴값으로만 쓰기를 권장
  • Optional 은 또다른 Optional 로 감싸지 말기

Optional API

  1. Optional 만들기
    Optional.of() : null이 안나올때 사용
    Optional.ofNullable() : null이 올수도 있을때
    Optional.empty() : null을 담고 있는,비어있는 Optional 객체 받아올때 사용

  2. Optional에 값이 있는지 없는지 확인하기
    isPresent()
    isEmpty() (Java 11부터 제공)

List<B_OnlineClass> classes1 = new ArrayList<>();
classes1.add(new B_OnlineClass(1,"spring boot",true));
classes1.add(new B_OnlineClass(2,"study with me",false));
classes1.add(new B_OnlineClass(3,"JPA",true));

Optional<B_OnlineClass> optional = classes1.stream()
                .filter(oc -> oc.getTitle().startsWith("ss"))
                .findFirst();
                
boolean present = optional.isPresent();
System.out.println(present); //false
  1. Optional에 있는 값 가져오기
    get() : 비어있을때는 NoSuchElementException

  2. Optional에 값이 있는 경우에 그 값을 가지고 ~~를 하라.
    ifPresent(Consumer)

optional.ifPresent(oc -> System.out.println(oc.getTitle()));
  1. 값이 있으면 가져오고 없으면~
    orElse(T) : 없으면 실행
    orElseGet(Supplier)
    orElseThrow() : 없으면 에러 던지기
B_OnlineClass b_onlineClass = optional.orElse(new B_OnlineClass(6,"sss",true));
System.out.println(b_onlineClass.getTitle()); //sss

B_OnlineClass b_onlineClass3 = optional.orElseThrow(IllegalStateException::new); // Exception in thread "main" java.lang.IllegalStateException
System.out.println(b_onlineClass3.getTitle());
  1. Optional 값 제어하기
    Optional filter(Predicate) : 값 걸러내기
    Optional map(Function) : 값 변환하기
    Optional flatMap(Function): Optional 안에 들어있는 인스턴스가 Optional인 경우에 사용하면 편리

0개의 댓글