공부 노트

Optional<T> 주요 메서드

미로910 2024. 10. 2. 14:06

Optional<T>는 Java 8에서 추가된 클래스로, 주어진 값이 null일 가능성을 명시적으로 처리하기 위해 사용됩니다. 이를 통해 null을 직접 다루지 않고도 안전하게 코드를 작성할 수 있습니다.

 

주요 메서드:

 

  • isPresent()
    • Optional에 값이 있는지 여부를 확인합니다.
    • 반환 타입: boolean
    • true는 값이 존재한다는 뜻이고, false는 값이 없음을 의미합니다.
  • get()
    • 값이 존재하는 경우 값을 반환합니다.
    • 값이 없으면 NoSuchElementException을 던집니다.
    • 이 메서드는 값이 확실히 있을 때만 사용해야 하며, 그렇지 않은 경우 orElse() 또는 orElseThrow()를 사용하는 것이 좋습니다.
  • orElse(T other)
    • 값이 존재하면 해당 값을 반환하고, 그렇지 않으면 지정된 other 값을 반환합니다.
  • orElseThrow(Supplier<? extends X> exceptionSupplier)
    • 값이 존재하지 않을 경우 예외를 던집니다.
    • Supplier 인터페이스를 사용하여 어떤 예외를 던질지 지정할 수 있습니다.
  • map(Function<? super T, ? extends U> mapper)
    • 값이 존재하면 해당 값을 매핑하여 새 값을 반환합니다.
    • 값이 없으면 빈 Optional을 반환합니다.

 

import java.util.Optional;

public class OptionalTest {

    public static void main(String[] args) {
        // 1. isPresent() 예시
        Optional<String> optional1 = Optional.of("Hello, World!");
        Optional<String> optional2 = Optional.empty();

        System.out.println("optional1 is present: " + optional1.isPresent()); // true
        System.out.println("optional2 is present: " + optional2.isPresent()); // false

        // 2. get() 예시
        if (optional1.isPresent()) {
            System.out.println("optional1 value: " + optional1.get()); // Hello, World!
        }
        
        // 3. orElse() 예시
        String value1 = optional1.orElse("Default Value");
        String value2 = optional2.orElse("Default Value");
        System.out.println("Value from optional1: " + value1); // Hello, World!
        System.out.println("Value from optional2: " + value2); // Default Value

        // 4. orElseThrow() 예시
        try {
            String value3 = optional2.orElseThrow(() -> new IllegalArgumentException("Value is absent"));
        } catch (Exception e) {
            System.out.println(e.getMessage()); // Value is absent
        }

        // 5. map() 예시
        Optional<Integer> mappedOptional = optional1.map(String::length);
        System.out.println("Length of optional1's value: " + mappedOptional.orElse(0)); // 13

        Optional<Integer> emptyMappedOptional = optional2.map(String::length);
        System.out.println("Length of optional2's value: " + emptyMappedOptional.orElse(0)); // 0
    }
}

 

'공부 노트' 카테고리의 다른 글

extends와 implements 차이점  (0) 2024.11.19
CRUD란?  (0) 2024.10.02
빈(Bean)이란?  (1) 2024.10.02
응답 코드 확인 (꼭 알아 두어야 하는 코드!!)  (0) 2024.10.02
추상화와 다형성  (1) 2024.09.26