: Java 8에서 도입된 클래스이며, null 값 처리를 안전하고 간결하게 하기 위해 설계되었다.
Optional은 값이 있을 수도 있고 없을 수도 있는 컨테이너(Wrapper) 역할을 하며, null 포인터 예외(NullPointerException)를 방지하는 데 유용하다.
Optional의 타입

Optional 생성
1.
Optional.of(value)값이 반드시 null이 아닐 때 사용. 값이 null이면 예외를 던진다.
Optional<String> opt = Optional.of("Hello");2.
Optional.ofNullable(value)값이 null일 수도 있을 때 사용. null이면 비어 있는
Optional을 반환한다.Optional<String> opt = Optional.ofNullable(null); // 빈 Optional 반환3.
Optional.empty()비어 있는
Optional 객체를 생성한다.Optional<String> opt = Optional.empty();
코드로 Optional 알아보기!
public class App {
public static void main(String[] args) {
String data1 = null;
Optional<String> op1 = Optional.ofNullable(data1);
if (op1.isPresent()) {// ofNUllable해서 자동완성
String r1 = op1.get();//get 꺼내는거
System.out.println("r1 : " +r1);
}
String data2 = null;
// Optional<String> op2 = Optional.ofNullable(data2);
// String r2 = Optional.ofNullable(data2).get(); ->nullpointException뜸
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);
}
}.orElseGet(()→{}) 과 .orElseThrow(()→{})
특징 | orElseGet | orElseThrow |
용도 | 기본값 반환 | 예외를 발생시킴 |
Supplier 실행 시점 | 값이 없을 때만 실행 | 값이 없을 때만 실행 |
반환값 | 기본값 또는 기존 값 | 기존 값 (값이 없으면 예외 발생) |
대표적인 사용 | 기본값을 동적으로 생성해야 할 때 사용 | 값이 반드시 필요하거나 비정상 상황에서 사용 |

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