Optional

WAS·2024년 2월 23일
0

자바

목록 보기
23/30

✅ Optional

  • Java 8 부터 도입된 클래스
  • 값이 없을 때 기본값을 설정하거나 예외를 던질 수 있음
  • 값이 존재할 수도 있고, 없을 수도 있다
  • 널포인터 예외를 방지할 수 있음
  • 제네릭을 사용하여 어떤 타입의 객체도 감싸서 담을 수 있다

✅ Optional 객체 생성

  • of() : 값이 null이 아닌 경우에만 Optional 객체 생성 = null이면 NullPointerException 발생
  • ofNullable() : 값이 null인 경우에도 Optional 객체 생성 = null이면 Optional.empty() 반환
  • empty() : 값을 갖지 않는 빈 객체를 생성

✅ 예시

public class Main {
    public static void main(String[] args) {
        // Optional.of() : 절대 null이 들어올 수 없는 경우
        Optional<String> optional1 = Optional.of("Hello, World!");
        System.out.println(optional1.get()); // Hello, World!

        // Optional.ofNullable() : null이 들어올 수도 있는 경우
        Optional<String> optional2 = Optional.ofNullable(null);
        System.out.println(optional2.isPresent()); // false

        // Optional.empty() : 비어있는 Optional 객체 생성
        Optional<String> optional3 = Optional.empty();
        System.out.println(optional3.isPresent()); // false
    }
}

✅ Optional을 활용한 안전한 null 처리

  • orElse() : 값이 없으면 기본값을 반환
  • orElseGet() : 값이 없으면 동적으로 값을 생성
  • orElseThrow() : 값이 없으면 예외 발생
public class Main {
    public static void main(String[] args) {
    	// 제네릭으로 <String> 타입을 명시를 해줘야함 = Optional 리턴타입이 Object 이기 때문에
        Optional<String> optionalString = Optional.ofNullable(null); 

        // 방법 1: 값이 없으면 기본값 반환
        String result1 = optionalString.orElse("기본값");
        System.out.println(result1); // 기본값

        // 방법 2: 값이 없을 때 동적 생성 (람다식 사용)
        String result2 = optionalString.orElseGet(() -> "동적 기본값");
        System.out.println(result2); // 동적 기본값

        // 방법 3: 값이 없으면 예외 발생
        // String result3 = optionalString.orElseThrow(() -> new RuntimeException("값이 없습니다!"));
        // System.out.println(result3); // RuntimeException 발생
    }
}
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글

관련 채용 정보