나는 여태 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 |
댓글