Java Optional

개발새발·2023년 1월 1일
0

java

목록 보기
10/12

자바를 하면서 느끼는건데….NPE 가 너무 킹 받는다.. 내가 자주 사용하던 언어인 PHP에서는 NPE 가 자주 발생하지 않았는데, 자바에서는 어떻게 처리해줘야지 싶어서 찾아봤는데, optional 이라는 클래스가 있었다.

Optional이란?

Java8 에서 NPE 를 방지할 수 있게 도와주는 클래스이다. Optional는 null이 올 수 있는 값을 감싸주는 Wrapper 클래스이다. 값을 Wrapping 하고 다시 풀고 null일 경우 대체하는 함수를 호출하는 등의 오버헤드가 있어 잘못 사용하게 되면 시스템 성능이 저하되게 된다. 때문에 메소드의 반환값이 절대 null이 아니면 Optional 사용을 권하지 않는다.

  • 여기서 wrapper 클래스란 뭘까?
    기본 타입의 데이터를 객체로 취급해야할 때가 있는데, 이때 데이터를 객체로 포장해주는 클래스를 래퍼클래스라고 한다.


Optional 활용

Optional 은 wrapper 클래스이기 때문에 값이 없을 수도 있다. 이때는 Optional.empty()로 생성이 가능하다.

Optional<String> optional = Optional.empty();

어떤 데이터가 절대 null이 아니라면 Optional.of()로 생성이 가능하다.

Optional<String> optional = Optional.of(24);

어떤 데이터가 null이 올수도 있고 아닐 수도 있는 경우에는 Optional.ofNullable 로 생성할 수 있다. 만약 null이 올 경우에는 orElse 또는 orElseGet 으로 사용해볼 수 있다.

profile
발새발개

0개의 댓글

관련 채용 정보