[기술정리] Optional

Stupefyee's avatar
Nov 20, 2024
[기술정리] Optional

1. 개요

  • 목적:
    • 값이 있을 수도, 없을 수도 있는 경우를 안전하게 처리
  • 대상:
    • null 처리 및 오류 예방

2. 주요 특징

  • 값 존재 여부:
    • 값이 있을 수도, 없을 수도 있음
  • null 직접 다루지 않음:
    • Optional을 통해 null을 명시적으로 처리하지 않음
  • 안전한 값 처리:
    • NullPointerException 예방

3. 주요 메소드

  1. of()
      • 값이 존재할 때 사용
      • 예: Optional.of("value")
  1. ofNullable()
      • 값이 null일 수도 있을 때 사용
      • 예: Optional.ofNullable(value)
  1. empty()
      • 값이 없을 때 사용
      • 예: Optional.empty()
  1. isPresent()
      • 값이 존재하는지 확인
      • 예: optionalValue.isPresent()
  1. ifPresent()
      • 값이 있을 때 람다 함수 실행
      • 예: optionalValue.ifPresent(value -> System.out.println(value))
  1. get()
      • 값 반환 (없으면 예외 발생)
      • 예: optionalValue.get()
  1. orElse()
      • 값 없으면 기본값 반환
      • 예: optionalValue.orElse("default")
  1. orElseGet()
      • 값 없으면 공급자 함수로 기본값 생성
      • 예: optionalValue.orElseGet(() -> "generated")
  1. orElseThrow()
      • 값 없으면 예외 던짐
      • 예: optionalValue.orElseThrow(() -> new RuntimeException("Error"))

4. 예시 코드

public class App { public static void main(String[] args) { String data1 = null; Optional<String> op1 = Optional.ofNullable(data1); // .isPresent() >> 안에 값이 존재하면 true if (op1.isPresent()) { String r1 = op1.get(); System.out.println("r1: " + r1); } String data2 = null; // String r2 = Optional.ofNullable(data2).orElseGet(() -> "없음"); System.out.println("r2: " + r2); String data3 = "대충 아무 값"; // null이면 예외 던지기 String r3 = Optional.ofNullable(data3).orElseThrow(() -> new RuntimeException("값이 없음, 확인 바람")); System.out.println("r3: " + r3); } }
Share article

stupefyee