Optional
클래스는 자바 8에서 도입된 기능으로, null
값을 처리하는 데 도움을 주기 위해 설계된 컨테이너 클래스입니다. 이 클래스는 객체의 존재 여부를 명확하게 표현함으로써 null
관련 오류를 방지하고, 보다 명시적이고 안전한 코드 작성을 돕습니다.주요 기능
- 값의 존재 여부를 표현:
Optional
은 값이 있을 수도 있고 없을 수도 있는 상황을 표현합니다.
- 널 포인터 예외 방지:
Optional
을 사용하면null
체크를 명시적으로 할 수 있어NullPointerException
을 방지할 수 있습니다.
예제 1: Optional
객체 생성 및 값 확인
String data1 = null;
Optional<String> op1 = Optional.ofNullable(data1);
if (op1.isPresent()) {
String r1 = op1.get();
System.out.println("r1 : " + r1);
}
Optional.ofNullable(data1)
:data1
값이null
일 수 있으므로ofNullable
메서드를 사용하여Optional
객체를 생성합니다.
- 값 확인 및 출력:
isPresent()
메서드를 사용하여 값이 존재하는지 확인하고, 존재하면 값을 가져와 출력합니다. 이 경우data1
이null
이므로 출력되지 않습니다.
예제 2: 값이 없을 경우 기본값 반환
String data2 = null;
String r2 = Optional.ofNullable(data2).orElseGet(() -> "null입니다.");
System.out.println("r2 : " + r2); // r2 : null입니다. 출력
Optional.ofNullable(data2)
:data2
값이null
일 수 있으므로ofNullable
메서드를 사용하여Optional
객체를 생성합니다.
orElseGet
메서드 사용: 값이 존재하지 않는 경우, 람다식() -> "null입니다."
를 실행하여 "null입니다."를 반환합니다.
- 결과 출력:
data2
가null
이므로 "null입니다."가 출력됩니다.
예제 3: 값이 없을 경우 예외 던지기
String data3 = null;
String r3 = Optional.ofNullable(data3).orElseThrow(() -> new RuntimeException("null 예외"));
// data3가 null 이면 RuntimeException 예외가 발생
Optional.ofNullable(data3)
:data3
값이null
일 수 있으므로ofNullable
메서드를 사용하여Optional
객체를 생성합니다.
orElseThrow
메서드 사용: 값이 존재하지 않는 경우, 지정된 예외(RuntimeException
)를 던집니다.data3
가null
이므로RuntimeException
이 발생합니다.
Share article