<aside>

Java 8에서 도입된 java.util 패키지의 제네릭 클래스로, 값이 존재할 수도 있고 존재하지 않을 수도 있는 객체를 표현하기 위해 사용된다. 주로 NullPointerException 방지명시적인 값 체크를 위해 사용된다.

</aside>

1. 왜 Optional이 필요한가?

전통적으로 Java에서는 어떤 값이 "없음"을 표현할 때 null을 사용한다. 그러나 null은 불명확하고, null을 잘못 다루면 NullPointerException이라는 런타임 에러가 발생한다.

예를 들어,

String name = user.getName(); // name이 null일 수 있음
System.out.println(name.length()); // NullPointerException 발생 가능

이 문제를 해결하기 위해 Optional을 사용하면 명확하게 "값이 없을 수 있음"을 표현하고 안전하게 처리할 수 있다.


2. Optional의 기본 사용법

Optional<String> name = Optional.of("홍길동");         // 값이 있는 Optional
Optional<String> empty = Optional.empty();            // 비어 있는 Optional
Optional<String> maybeNull = Optional.ofNullable(null); // null 허용