본문 바로가기

JAVA

null 값을 관리할 수 있는 class : Optional<T>

Optional<T>

 

Java8부터 null 값을 깔끔하게 처리할 수 있도록 Optional 클래스가 추가됐다.

Optional<String> opt = Optional.ofNullable("자바 Optional 객체");

System.out.println(opt.get());

참조 변수의 값이 null이 될 가능성이 있으면 Optional 객체를 생성하는 것이 편리하다.
.ofNullable() 메소드를 통해 명시된 값이 null 이면 비어있는 Optional 객체 반환,
null이 아니면 값을 가지는 Optional 객체를 반환한다.

 

Method

.isPresent() : 값이 null인지 여부 => 존재한다면 true, null값이라면 flase 반환
.ifPresent() : 람다식을 인자로 받아서, 값이 존재할 때 람다식에 적용, 존재하지 않는다면 실행되지 않는다.
.get() : 값이 있다면 value 반환, 없다면 NoSuchElementException 발생
.orElse() : 비어있다면 orElse()에 지정된 값 반환
.orElseGet() : 비어있다면 orElseGet()에 적용된 함수를 통해 객체를 반환
.orElseThrow() : 비어있다면 orElseThrow()에 적용된 함수를 실행해 예외 발생 (Java10 부터는 인자가 없어도 기본적으로 NoSuchElementException 반환)

 

 

 

면접 질문 중 nullPointException이 굉장히 무서운 에러인데 어떻게 관리하는지에 대한 질문을 받았었다.

이런 경우, 여러 답변 중 하나로 Optional<T> Class를 통해서 관리한다고 대답했어야 했다고 생각했다.

물론 그 당시에는 모르쇠를 시전했지만 이제는 적어도 하나는 말할 수 있다!

 

참고:

https://hbase.tistory.com/212

http://www.tcpschool.com/java/java_stream_optional