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