Skip to main content Link Search Menu Expand Document (external link) Copy Copied

Optional이란?

Java에서 Optional이란 값이 있을 수도, 없을 수도 있는 상황을 다루기 위한 도구다. 개발하면서 종종 마주하는 NullPointerException을 예방하기 위한 것이다. Optional을 사용하면 null을 안전하게 다루는 동시에, 코드의 가독성을 높일 수 있다.


Optional 생성 방법

1. 빈 Optional 생성

값이 없는 Optional을 만들고 싶다면 Optional.empty()를 사용한다.

Optional<String> emptyOpt = Optional.empty();

여기서 emptyOpt는 값이 없음을 명시한 빈 Optional 객체다.


2. 값이 있는 Optional 생성

값이 있을 때는 Optional.of()를 사용해 값을 가진 Optional을 생성한다. 단, null을 넣으면 예외가 발생하니 주의한다.

Optional<String> opt = Optional.of("Hello, World!");

3. 값이 있을 수도 없을 수도 있는 경우

값이 null일 가능성이 있다면 Optional.ofNullable()을 사용한다. 이 방법으로 null일 경우 자동으로 빈 Optional을 반환하게 된다.

String name = getName();  // name이 null일 가능성이 있다
Optional<String> optName = Optional.ofNullable(name);

Optional의 주요 메소드

1. 값 존재 확인 - isPresent()

값이 있는지 확인하려면 isPresent()를 사용한다. 값이 있으면 true, 없으면 false를 반환한다.

if (opt.isPresent()) {
System.out.println(opt.get());  // 값이 있을 때만 출력
}

2. 값이 있을 때만 실행 - ifPresent()

값이 있을 때만 특정 작업을 수행하고자 할 때 ifPresent()를 사용한다. 주어진 람다식을 값이 있을 때만 실행해준다.

opt.ifPresent(value -> System.out.println(value));

3. 값이 없을 때 기본값 사용 - orElse()

값이 없을 경우 특정 기본값을 사용하고 싶다면 orElse()를 사용한다. null 대신 안전한 기본값을 반환해 준다.

String result = opt.orElse("Default Value");

4. 값이 없을 때 예외 던지기 - orElseThrow()

값이 반드시 필요한 경우, 값이 없으면 예외를 던지는 방식으로 처리한다. 값이 없으면 명확한 예외를 발생시키며 안전하게 다룰 수 있다.

String result = opt.orElseThrow(() -> new IllegalArgumentException("Value is required"));

Optional은 코드에서 null을 안전하게 다루는 강력한 도구다. 사용하면 불필요한 null 체크를 줄이고, 좀 더 명확하게 값의 존재 여부를 다룰 수 있다.