Java Optional에 대한 설명과 예제
2023. 7. 13. 13:57ㆍ카테고리 없음
반응형
Optional 특징
- 값이 존재하지 않을 때를 대비한 안전한 처리: Optional은 값이 없을 때에 대한 처리를 안전하게 할 수 있습니다. 값이 존재하지 않을 때에는 null 대신 Optional.empty()로 표현됩니다.
- Null 체크를 간소화: Optional을 사용하면 명시적인 null 체크를 줄일 수 있습니다. 값이 있는 경우에 대한 로직에 집중할 수 있습니다.
- Method Chaining을 통한 유연한 연산: Optional은 메서드 체이닝을 통해 여러 연산을 수행할 수 있습니다. 값이 있는 경우에만 연산이 수행되므로, NullPointerException을 방지하면서 유연한 코드를 작성할 수 있습니다.
Optional 예제
1. Optional 생성
Optional<String> optionalValue = Optional.of("Hello");
Optional<String> emptyOptional = Optional.empty();
Optional<String> nullableOptional = Optional.ofNullable(null);
2. 값의 존재 여부 확인
Optional<String> optionalValue = Optional.of("Hello");
// 값이 있는지 확인
boolean isPresent = optionalValue.isPresent();
System.out.println("Is present: " + isPresent);
// 값이 있는 경우에만 동작
optionalValue.ifPresent(value -> System.out.println("Value: " + value));
3. 값 가져오기
Optional<String> optionalValue = Optional.of("Hello");
// 값 가져오기
String value = optionalValue.get();
System.out.println("Value: " + value);
4. 값이 없을 때 기본값 사용
Optional<String> emptyOptional = Optional.empty();
// 값이 없을 때 기본값 사용
String value = emptyOptional.orElse("Default Value");
System.out.println("Value: " + value);
// 값이 없을 때 기본값 생성 함수 사용
String anotherValue = emptyOptional.orElseGet(() -> "Default Value");
System.out.println("Another Value: " + anotherValue);
5. 값이 없을 때 예외 던지기
Optional<String> emptyOptional = Optional.empty();
// 값이 없을 때 예외 던지기
String value = emptyOptional.orElseThrow(() ->
new RuntimeException("Value is not present"));
System.out.println("Value: " + value);
6. 값 변환하기
Optional<String> optionalValue = Optional.of("Hello");
// 값 변환
Optional<Integer> lengthOptional = optionalValue.map(String::length);
lengthOptional.ifPresent(length ->
System.out.println("Length: " + length));
7. 중첩 Optional 처리
Optional<String> optionalValue = Optional.of("Hello");
Optional<Optional<String>> nestedOptional = Optional.of(optionalValue);
// 중첩 Optional 풀어내기
Optional<String> flattenedOptional = nestedOptional.flatMap(Optional::stream);
flattenedOptional.ifPresent(value -> System.out.println("Value: " + value));
반응형