230829 TIL #176 Optional<T>

김춘복·2023년 8월 28일
0

TIL : Today I Learned

목록 보기
176/571

Today I Learned

Optional에 대해 공부해보았다.


Optional<T>

  • Spring으로 프로젝트를 하던 도중 findById() 메서드를 객체로 받지 못해서 마우스로 올려보니 Optional 타입으로 나와서 변수 자체를 Optional로 받던가 .orElseThrow로 예외처리를 하지 않으면 에러가 떠서 정리해본다.

  • Optional<T> 클래스는 Integer처럼 'T'타입의 객체를 포장해 주는 래퍼 클래스다.
    Optional 객체를 활용하면 null값으로 발생하는 예외를 조건문이 없어도 간단히 처리 할 수 있다. Java8부터 등장해 NullPointerException(이하 NPE)를 방지할수 있도록 했다.

  • JpaRepository에서 findBy~ 메서드는 Optional 값을 리턴한다.

  • 아래와 같은 메서드를 이용하면 null대신에 대체할 값을 지정할 수 있다.

    1. .orElse() : 저정된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 값을 반환
    2. .orElseGet() : 저정된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 람다표현식의 결과값을 반환
    3. .orElseThrow() : 저정된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 예외를 발생

  • Optional<T> 값을 <T>타입으로 받아오려면 null을 고려 안하면 .get()으로
    null을 고려하면 위의 메서드를 활용해 받아올 수 있다.

  • isPresnt()메서드를 활용해 값이 있는지 확인할 수 있다.

참고사이트

profile
Backend Dev / Data Engineer

0개의 댓글