본문 바로가기
프로그래밍/Java

Optional 에 대해서 알아보았다.

by yonmoyonmo 2021. 4. 15.

자바 로고

나는 여태 Optional이 뭔지 제대로 모르고 그냥 대충 쓰고 넘어갔다. 그러다 어제 문득 Optional이 궁금해 져서 조금 알아보았다. 나중에 또 까먹고 궁금해 지면 내가 쓴 이 글로 돌아와서 상기해야지!

Optional<T>

- 래퍼 클래스 중 하나로 T를 필드에 갖고 있다. 어떤 함수의 결과 등이 null을 반환할 경우가 있다면 Optional로 한 번 감아서 주고 받기를 기대하면서 만들어진 기능이라고 한다. 자바 8 부터인가 쓰기 시작했다고 한다. 

- null 체크하는 조건문을 줄일 수 있고(아예 안 쓸 수도 있을 것임), null을 참조하는 경우를 최대한 막을 수 있다(잘 쓰면)

사용하는 요-령

 생성 요-령 : String을 갖고 해보기

1. Optional<String> optional = Optional.of("somestring");
    -> of로 만들기...

2.Optional<String> optional = Optional.ofNullable(null)
    -> null 값을 가져도 되는 경우 요렇게...

3.Optional<String> optional = Optional.empty();
    -> 비었을 때...

옵셔-널 안의 값을 갖다 쓰는 요령

1. optional.get() ===> 그냥 안에 있는 값 반환 ===> 안에 값이 null인 경우 옵셔널로 감싼 이유가 무색해짐 ===> 안씀

2. optional.orElse("널일 경우 이것을 반환") ===> null일 경우 대신 뭐 주는 식으로 처리 가능

3. optional.orElseGet(T::new) ===> 널 일 경우 뭐 주는거를 람다 식으로 가능
    ==예=> optional.orElseGet( value -> {
            이것 저것 하기;
            return new String("널일 경우 이것을 반환");
    });

4. optional.orElseThrow(NullPointerException::new); ===> null이면 예외 발생5. optional.isPresent() ===> 안에 값이 null이면 false 아니면 true6. optional.ifPresent( 안에 값이 있으면 여기서 람다식으로 조지기 가능 )

 

끝.

'프로그래밍 > Java' 카테고리의 다른 글

스프링 없이 HTTP서버를 만들어 보았다.  (1) 2021.04.23
JVM과 JRE와 JDK를 알아보았다.  (0) 2021.04.20

댓글