ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Optinal
    JAVA/스트림 2023. 8. 9. 00:10

    T타입의 객체 래퍼클래스 - Optional<T>

    public final class Optional<T> {
        private final T value;  // T타입의 참조변수
        ....
    }

    null을 직접 다루는 것은 위험하기 때문에 Optional을 이용해서 간접적으로 null을 다루는 것이다.

     

     

     

     

    Optinal<T> 객체 생성하기

    String str = "abc";
    Optional<String> optVal = Optional.of(str);
    Optional<String> optVal = Optional.of("abc");
    Optional<String> optVal = Optional.of(null);          // NullPointerException 발생
    Optional<String> optVal = Optional.ofNullable(null);  // 가능

    null이 될 수 있으면 null 대신 Optional<T> 객체를 사용하는게 좋다.

     

    Optional<String> optVal = null;                             // 이렇게 하면 안됨

    Optional<String> optVal = Optional.empty();        // 이렇게 하는걸 추천

     

     

     

     

     

    Optional<T> 객체의 값 가져오기

    Optional<String> optVal = Optional.of("abc");
    String str1 = optVal.get();   // null이면 예외 발생하기 때문에 거의 안쓰임
    String str2 = optVal.orElse("");                 // optVal에 저장된 값이 null일 때는, ""를 반환
    String str3 = optVal.orElseGet(String::new);     // 람다식 사용 가능 () -> new String)_
    String str4 = optVal.orElseThrow(NullPointerException::new); // null이면 에외 발생

    위의 예제에서 str2, str3의 경우의 메서드가 자주 사용된다.

     

    // ifPresent(Consumer) - null이 아닐때만 수행하고 null이면 아무것도 안함
    Optional.ofNullable(str).isPresent(System.out::println);

    'JAVA > 스트림' 카테고리의 다른 글

    스트림의 그룹화와 분할  (0) 2023.08.09
    collect()와 Collectors  (0) 2023.08.09
    스트림의 연산 - 최종 연산  (0) 2023.08.08
    스트림의 연산 - 중간 연산  (0) 2023.08.08
    스트림 만들기  (0) 2023.08.08
Designed by Tistory.