Java의 Optional 자료구조: Null 안전성과 값의 존재 유무를 표현하는 클래스

IMKUNYOUNG·2023년 6월 14일
0

자료구조

목록 보기
6/9

Java에서는 코드 작성 시 NullPointerException 등의 예외를 방지하고, 값의 존재 유무를 표현하기 위해 Optional이라는 특별한 자료구조를 제공합니다. Optional은 null 값 처리를 안전하게 다룰 수 있도록 도와주며, 메서드 반환 값으로 사용되어 값이 존재하지 않을 수 있는 경우에 대한 명시성을 제공합니다. 이번 글에서는 Java의 Optional 자료구조에 대해 상세히 알아보고, 실제 예시를 통해 사용 방법을 설명하겠습니다.


1. Optional의 개요

Optional은 java.util 패키지에 속한 클래스로, Java 8에서 소개되었습니다. Optional은 값이 존재할 수도 있고, 존재하지 않을 수도 있는 상황을 처리하는 데 사용됩니다. null 값을 다룰 때 발생하는 예외를 방지하고, 코드의 가독성을 향상시키는 데 도움이 됩니다.


2. Optional의 사용 방법

Optional 클래스는 다양한 메서드를 제공하여 값의 존재 유무를 확인하고, 값을 안전하게 추출할 수 있습니다. 아래 예시를 통해 Optional의 사용 방법을 자세히 알아보겠습니다.

import java.util.Optional;

public class OptionalExample {
    public static void main(String[] args) {
        String str = "Hello, World!";

        // Optional 객체 생성
        Optional<String> optionalStr = Optional.of(str);

        // 값의 존재 유무 확인
        boolean isPresent = optionalStr.isPresent();
        System.out.println("값의 존재 유무: " + isPresent);  // 출력: 값의 존재 유무: true

        // 값 추출
        String value = optionalStr.get();
        System.out.println("값: " + value);  // 출력: 값: Hello, World!

        // 값 변경
        optionalStr = optionalStr.map(s -> s.toUpperCase());
        value = optionalStr.get();
        System.out.println("변경된 값: " + value);  // 출력: 변경된 값: HELLO, WORLD!

        // 값이 존재하지 않을 때 대체 값 설정
        String defaultValue = "Default Value";
        String result = optionalStr.orElse(defaultValue);
        System.out.println("값이 존재하지 않을 때 대체 값: " + result);  // 출력: 값이 존재하지 않을 때 대체 값: HELLO, WORLD!

        // 값이 존재하지 않을 때 예외 발생
        String nonNullValue = optionalStr.orElseThrow(IllegalStateException::new);
        System.out.println("값이 존재하지 않을 때 예외 발생: " + nonNullValue);
    }
}

위의 예시에서는 문자열 "Hello, World!"를 담고 있는 Optional 객체를 생성합니다. isPresent() 메서드를 사용하여 값의 존재 유무를 확인하고, get() 메서드를 사용하여 값을 추출합니다. map() 메서드를 사용하여 값의 변환도 가능합니다. 또한, orElse() 메서드를 사용하여 값이 존재하지 않을 때 대체 값을 설정하거나, orElseThrow() 메서드를 사용하여 예외를 발생시킬 수도 있습니다.

실행 결과는 다음과 같습니다:

값의 존재 유무: true
값: Hello, World!
변경된 값: HELLO, WORLD!
값이 존재하지 않을 때 대체 값: HELLO, WORLD!
값이 존재하지 않을 때 예외 발생: HELLO, WORLD!

결론

Java의 Optional 자료구조는 null 값을 다루는 데 있어서 안전성과 가독성을 제공하는 유용한 도구입니다. 값의 존재 유무를 명시적으로 표현하고, NullPointerException 예외를 방지할 수 있습니다. Optional 클래스는 다양한 메서드를 제공하여 값을 안전하게 다루고, 대체 값 설정이나 예외 발생 등의 기능도 제공합니다. 이를 활용하여 코드를 작성할 때 NullPointerException 등의 예외를 방지하고, 가독성을 향상시킬 수 있습니다.

0개의 댓글

관련 채용 정보