[기술정리] Optional - null 처리

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

Optional의 타입

notion image

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 실행 시점
값이 없을 때만 실행
값이 없을 때만 실행
반환값
기본값 또는 기존 값
기존 값 (값이 없으면 예외 발생)
대표적인 사용
기본값을 동적으로 생성해야 할 때 사용
값이 반드시 필요하거나 비정상 상황에서 사용
notion image
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);
notion image
Share article

silver