값이 있을 수도, 없을 수도 있는 상황을 안전하게 처리하기 위한 컨테이너 클래스
1. 옵셔널이란?
Java 8에서 도입된 옵셔널(Optional)은 값이 있을 수도 있고 없을 수도 있음을 나타내는 컨테이너로, 주로
null
값을 안전하게 처리하기 위해 사용되며, null
을 직접 다루지 않고 값의 존재 여부를 명확하게 처리할 수 있게 한다.2. 예제 코드
public class App {
public static void main(String[] args) {
String data1 = null;
Optional<String> op1 = Optional.ofNullable(data1);
if (op1.isPresent()) {
String r1 = op1.get();
System.out.println("r1: " + r1);
}
String data2 = null;
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);
}
}
ofNullable
- 주어진 값이
null
일 수도 있고 아닐 수도 있을 때 사용되는Optional
을 생성하는 메서드 - 값이
null
이면 빈Optional
을 반환하고, 값이 있으면 그 값을 포함한Optional
을 반환한다.
isPresent
Optional
에 값이 존재하는지 확인하는 메서드- 값이 있으면
true
, 없으면false
를 반환한다.
orElseGet
Optional
의 값이 비어 있을 경우, 제공된 람다식을 통해 대체 값을 생성해 반환하는 메서드- 값이 있으면 그 값을 반환하고,
null
일 경우 동적으로 생성된 값을 반환한다.
orElseThrow
Optional
의 값이 비어 있을 경우, 지정된 예외를 던지는 메서드- 값이 없으면 예외를 발생시키고, 값이 있으면 그 값을 반환한다.
Share article