java optional이란?

spring 강의를 듣다가 optional이라는 클래스를 알게 되었다. 신기하고 중요한 클래스같아서 정리시작!

optional이란?

Java8에서 지원하는 클래스. 개발을 할 때 NPE(NullPointerException)이 자주 발생하는데, 이를 피하기 위해 보통 null 검사 로직을 추가한다. 하지만 null검사를 해야하는 변수가 많으면 코드가 복잡해지면서 로직도 번거로워진다. Optional 은 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NPE가 발생하지 않게 도와준다.

optional 활용하기

  • optional.empty() : 값이 비어있는 경우

    Optional<String> optional = Optional.empty();
    System.out.println(optional); // optional.empty
    System.out.println(optional.isPresent()); // false

  • optional.of() : 값이 null이 아닌 경우

    Optioanl<String> optional = Optional.if("myNAme");

    *null로 저장하려고 하면 NPE가 발생한다.

  • optional.ofNullable() : 값이 null일 수도 아닐 수도 있는 경우

    Optional<String> optional = optional.ofNullable(getName());

  • optional.orElse() : 값이 없다면 디폴트값 리턴

    Optional<String> optional = optional.ofNullable(getName()).orElse("hi"); 

  • optional.isPresent() : optional값이 있으면 동작

    Optional<String> result = repo.findByName(getName());
    repo.ifPresent(res -> { throw new exception(); });

이 외에도 여러 함수가 있는 것 같은데 사용할때마다 추가해야겠다. 🤓
참고: https://mangkyu.tistory.com/70

좋은 웹페이지 즐겨찾기