반응형
Java 8에서 도입된 Optional은 null-safe한 프로그래밍을 위한 도구로 많은 개발자들에게 사랑받고 있습니다. 이번 글에서는 Java Optional에 대해 자세히 알아보겠습니다.
Optional은 값의 존재 여부를 표현하는 컨테이너 클래스입니다. 값이 있을 수도 있고 없을 수도 있는 상황에서 NullPointerException을 방지하고자 할 때 유용하게 사용됩니다.
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));
728x90
반응형
'back end > java' 카테고리의 다른 글
apache poi - IOException: 지정된 경로를 찾을 수 없습니다 (1) | 2023.10.04 |
---|---|
[JPA] deleteAll을 했는데 delete가 N개 발생하는 이유에 대하여 (1) | 2023.09.11 |
HttpClient5에서 SSL(인증서) 무시하는 방법 (0) | 2023.06.27 |
[Gradle] dependency 가 포함된 jar 만드는 방법 (0) | 2023.06.27 |
Java에서 디스크 사용량 (Disk Usage) 구하는 방법 (0) | 2023.06.15 |