🕊️ 자바에서 Optional을 올바르게 쓰는 법

당신이 얼마나 오래 프로그래밍을 했든지, NullPointerException(이하 NPE)은 가장 답답한 문제 중 하나입니다.


Optional 클래스는 NPE 문제를 해결하기 위해 자바 8부터 도입되었습니다.


java.util.Optional<T> 클래스의 목적은 null일 수 있는 T 타입의 개체에 대한 안전한 대안을 제공하는 것입니다. optional 객체를 만들 수 있는 방법을 살펴봅시다.


📌 Empty Optional

Optional.empty()를 사용하면 비어 있는 optional 객체를 생성할 수 있습니다.


📌 Nullable Optional

Optional.ofNullable() 메소드를 사용하여 nullable optional 객체를 만들 수 있습니다. 이러한 객체는 null이거나 null 값을 가질 수 있습니다.


📌 Non-Nullable Optional

Optional.of() 메소드를 사용하여 null이 아닌 optional 객체를 만들 수 있습니다.


Optional 클래스에 존재하는 get() 메소드는 값이 존재한다면 그 값을 가져오거나 NoSuchElementException 예외를 던집니다.


대신에 isPresent() 메소드를 사용하여 값이 존재하는지 여부에 대한 boolean 값을 반환하는 두 번째 방법을 사용할 수 있습니다. 그러나 이 방법은, !=null을 사용하는 것과 별반 다르지 않아 보입니다.

```

if(optionalWallet.isPresent()){
savings.add(optionalWallet.get().getMoney());
}


```


코드를 더 간결하게 만들기 위해, ifPresent() 메소드를 사용할 수도 있습니다.

```

optionalWallet.ifPresent(wallet -> savings.add(wallet.getMoney()));

```


값이 비어있을 때 기본값을 가져오는 시나리오가 있을 수 있습니다. orElse() 메소드를 사용하여 옵션이 null일 때 대체 값을 생성할 수 있습니다. 또는 orElseGet() 메소드를 사용하여 기본값을 계산할 수도 있습니다.

```

Wallet wallet = optionalWallet.orElse(new Wallet(0));

```


지금까지 자바에서 Optional을 사용하는 몇 가지 좋은 방법이었습니다.


Using Optional in Java the right way

Medium

Using Optional in Java the right way

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 10월 19일 오전 11:54

 • 

저장 160조회 10,175

댓글 0

    함께 읽은 게시물

    혹시, Cursor 나 Claude 얘기는 많이 들었는데
    잘 쓰고있는건지 모르겠다,
    이제는 AI 활용 방법 제대로 배워야 할것 같은데
    어디서부터 어떻게 시작할지 막막하다
    이런 고민을 하고 계신가요??

    ... 더 보기


    넷플릭스는 왜 WebFlux를 사용하지 않을까?

    ... 더 보기

    넷플릭스는 왜 WebFlux를 사용하지 않을까?

    kr.linkedin.com

    넷플릭스는 왜 WebFlux를 사용하지 않을까?

    나는 종종 생산성을 올리기 위한 각종 개발 툴은 물론, 라이브러리나 소스 코드를 구매하기도 한다.


    소스 코드의 경우 실제로 써먹지 못하는 경우도 상당수 되긴 하지만, 그래도 구성이나 코드를 보면서 배우는게 있기 때문에 학습 비용이라고 생각하고 가끔 구매하는 편이다.


    ... 더 보기