NPE(NullpointerException)
이 에러를 피하기 위해서는 null 검사를 해야하는데 그 과정이 굉장히 복잡하다.
따라서 Optional이라는 개념이 나왔다.
Optional
Java8부터는 Optional<T>라는 클래스로 NPE를 방지할 수 있게 해준다.
Null이 올수 있는 값을 감싸는 클래스이다.
클래스 내부의 private final 변수에 값을 저장하기 때문에 NPE가 발생하지 않게 도와준다.
또한 여러가지 유용한 메서드를 사용하게 해준다.
생성
Optional.empty() : 값이 Null인 경우 생성하기
Optional<String> optional = Optional.empty();
System.out.println(optional); // Optional.empty
System.out.println(optional.isPresent()); // false
Optional.of() : 값이 Null이 될수 없는 경우 생성하기(이 경우 Null을 저장하려고 하면 NPE가 발생함)
Optional<String> optional = Optional.of("MyName");
Optional.ofNullable() :Null이 될 수 있는 값 생성하기
Optional<String> optional = Optional.ofNullable(getName());
활용
isPresent() : 값이 있으면 true,Null이면 false
isEmpty() : 반대로 값이있으면 false, Null이면 true
get() : 값이 있으면 값을 반환, 없으면 NoSuchElementException을 발생시킴
orElse() 메소드 : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 값을 반환함.
orElseGet() 메소드 : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 람다 표현식의 결괏값을 반환함.
orElseThrow() 메소드 : 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인수로 전달된 예외를 발생시킴.
이글을 보고 제가 보기 쉽게 정리한 글입니다. :https://mangkyu.tistory.com/70
[Java] Optional이란? Optional 개념 및 사용법 - (1/2)
이번에는 Java8부터 지원하는 Optional 클래스에 대해 알아보도록 하겠습니다. 1. Optional이란? Optional 개념 및 사용법 [ NPE(NullPointerException) 이란? ] 개발을 할 때 가장 많이 발생하는 예외 중 하나..
mangkyu.tistory.com
'JAVA > [JAVA]' 카테고리의 다른 글
생성자를 이용한 인스턴스 복사 (0) | 2022.10.24 |
---|---|
생성자에서 다른 생성자 호출하기 (0) | 2022.10.24 |
기본형 매개변수와 참조형 매개변수 (0) | 2022.10.23 |
JVM의 메모리 구조 (1) | 2022.10.23 |
배열.clone() (0) | 2022.10.17 |