본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/JAVA

[Java] Optional 소개

by 미노드 2024. 1. 13.

자바의 Optional은 Java 8에서 소개된 클래스로, 값이 존재하지 않을 수 있는 상황에서 사용됩니다.
이 클래스는 null을 피하기 위한 강력한 도구로서, 코드에서 명시적으로 값이 없음을 나타내거나 다룰 때 사용됩니다.

Optional 클래스는 제네릭을 사용하여 어떤 타입의 객체도 감싸서 담을 수 있습니다..
Optional 객체는 값이 존재할 수도 있고, 없을 수도 있습니다.
때문에, NullPointerException 예외를 방지할 수 있고, 코드의 안정성을 높이며 가독성을 향상시킵니다.

Optional은 다음과 같은 주요 특징을 가지고 있습니다:

  1. Null 방지: Optional은 값이 없는 경우 null을 사용하는 것 대신 사용됩니다. 이로써 NullPointerException을 방지할 수 있습니다.
  2. 함수형 프로그래밍 지원: Optional은 함수형 프로그래밍 스타일을 지원하며, 값을 다루는 다양한 메서드들을 제공합니다.

특히 Optional의 Null방지 기능을 이용하여, 예외처리를 try catch 대신 처리할 수도 있다고 합니다.
orElse기능으로 대처가 가능할거라 생각됩니다.

Optional을 사용하는 간단한 예제를 만들어 봤습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Optional;
 
public class Optionals {
    public static void main(String[] args) {
        String str = "abcd efgh"// null이 아닌 값을 가지는 문자열 변수
        Optional<String> optional = Optional.of(str); // Optional 객체 생성, 값이 null이 아니므로 of() 메서드 사용
        System.out.println(optional); // 출력: Optional[abcd efgh]
        System.out.println(optional.toString()); // 출력: Optional[abcd efgh]
        System.out.println(optional.get()); // 출력: abcd efgh
        System.out.println("-----------------------------");
        String nullStr = null// null 값을 가지는 문자열 -> empty로 출력
        Optional<String> optionalNull = Optional.ofNullable(nullStr); // Optional 객체 생성, 값이 null이므로 ofNullable() 메서드 사용
        System.out.println(optionalNull); // 출력: Optional.empty
        System.out.println(optionalNull.toString()); // 출력: Optional.empty
//        System.out.println(optionalNull.get()); // 에러, null은 get 시키지 못한다.
        System.out.println(optionalNull.orElse("optionalNull orElse")); // empty나
        System.out.println("-----------------------------");
        Optional<String> optionalEmpty = Optional.empty(); // null 이 들어간 Optional
        System.out.println(optionalEmpty); // 출력: Optional.empty
        System.out.println(optionalEmpty.toString()); // 출력: Optional.empty
//        System.out.println(emptyOptional.get()); // 에러, empty()시킨 optional의 값을 get()하면 에러난다.
        System.out.println(optionalEmpty.orElse("optionalEmpty orElse")); // 빈값이나 null일 경우
        System.out.println(optionalEmpty); //
        System.out.println("-----------------------------");
        Optional<String> optionalEmpty2 = Optional.ofNullable(""); // 빈값을 넣음 Optional 객체 생성
        System.out.println(optionalEmpty2); // 출력: Optional[]
        System.out.println(optionalEmpty2.toString()); // 출력: Optional[]
        System.out.println(optionalEmpty2.get()); // 출력:   빈값으로 출력된다. "" 임
        System.out.println(optionalEmpty2.orElse("optionalEmpty2 orElse")); // 빈값""이나, null 이 아니므로 "" 출력
 
    }
}
cs

이 예제에서 Optional.of로 값이 있는 Optional을 생성하고, Optional.empty()로 값이 없는 Optional을 생성합니다. ifPresent 메서드를 사용하여 값이 있는 경우에만 처리를 수행하거나, orElse 메서드를 사용하여 값이 없는 경우 기본값을 제공할 수 있습니다.

'IT기술 > JAVA' 카테고리의 다른 글

[Java] null 에 대한 검증, 처리방법  (0) 2024.01.14
[Java] 자바에서 싱글톤 패턴 이해하기  (0) 2024.01.13
[Java] Java jks 만들기  (0) 2024.01.10
[java] Stream 이해하기  (0) 2024.01.09
자바 정규표현식 기술 정리  (0) 2024.01.04