반응형
Optional 나온 이유?
Optional 클래스는 Java 8부터 나온 개념으로 NPE를 방지하기 위해 나왔다.
우리가 자바 개발을 할 때 객체가 null값을 주게되는 경우가 있다. 이때 이 객체를 참조하면 null을 참조하는 것이 되기 때문에 NPE[NullPointerException] 예외가 발생하게 된다.
때문에 개발자들은 NPE 발생을 줄이기 위해 null 확인을 하기 위한 조건문을 추가하였다.
User user = userService.getUser(id);
if(user != null) {
String email = user.getEmail();
}
위와 같이 조건문으로 null 확인을 하여 NPE를 방지한다 하더라도 이러한 방식은 코드를 어지럽히기에 가독성을 저하시킨다.
Java는 이를 위해 java.util.Optional<T>라는 새로운 클래스를 제공한다.
Optional 클래스
Optional<T> 클래스는 어떤 식으로 NPE를 방지해주는 것일까?
Optional<T> 클래스는 null이 올 수 있는 값을 캡슐화하는 Wrapper 클래스이다.
때문에 null을 참조하더라도 Optional 클래스가 값을 감싸고 있어 Optional.empty 메소드로 Optional을 반환한다.
덕분에 null을 참조하면 NullPointerException이 발생했지만 Optional<T> 클래스를 사용함으로 NPE 발생을 방지해준다.
반응형
'Java' 카테고리의 다른 글
Java 동기화와 비동기 처리 (0) | 2023.06.05 |
---|---|
JAVA ThreadPoolExecutor을 이용한 스레드 풀(Thread Pool) (0) | 2023.05.25 |
Java 스트림(Stream) 정리 (0) | 2022.12.05 |
[Java] 스트림 생성 (리스트, 배열을 스트림으로, 숫자 범위로부터 스트림, 파일로부터 스트림) (0) | 2022.12.05 |
[Java] 변수명, 메소드명 작성법 (0) | 2022.10.29 |