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를 통해서 관리한다고 대답했어야 했다고 생각했다.
물론 그 당시에는 모르쇠를 시전했지만 이제는 적어도 하나는 말할 수 있다!
참고:
http://www.tcpschool.com/java/java_stream_optional
'JAVA' 카테고리의 다른 글
클래스, 객체, 인스턴스가 뭐에요? (0) | 2022.12.27 |
---|---|
자주 쓰이는 정규식 패턴 (2) | 2022.11.04 |
JAVA 버전 설정 ( 17 => 11) (2) | 2022.10.26 |
20자리 랜덤 문자열 생성 (AccessKey 만들 때) (2) | 2022.10.13 |
문자열 배열 길이 순으로 정렬하기 (Comparator) (0) | 2022.10.06 |