-
- java 8 부터 도입된 클래스
- null을 직접 다루는 것보다 안전하게 객체의 존재 또는 부재를 표현할 수 있게 해줌
- optional 객체는 특정 타입의 객체를 포장하여 해당 객체가 null일 수도 있음을 명시적으로 나타낸다
ex)
Optional<User> user = getUserById(id); if (user.isPresent()) { System.out.println(user.get().getName()); } else { System.out.println("User not found"); } // or if (!user.isPresent()) { throw new EntityNotFoundException("userId에 해당하는 유저가 없습니다."); } // 이후 로직 // 또는 String name = getUserById(id).orElse(new User("default")).getName();
- user 타입의 객체를 반환하는 메소드가 있을 때 해당 객체가 null일 가능성이 있다면 Optional<User>를 반환 타입으로 지정할 수 있다
- 메소드를 호출하는 측에서는 반환된 Optional객제가 null인지 아닌지 isPresent() 메소드를 통해 안전하게 확인할 수 있습니다
- getUserById(id) 메소드는 Optionl<User>를 반환
- user.isPresent()는 Optional객체가 null이 아닌지를 확인
- 이렇게하면 NullPointerException을 피할수있다
사용이유
- null값이 들어왔을때 nullpointerexception을 발생하지 않고 User not found 를 출력해준다
'공부 > 기본' 카테고리의 다른 글
jwt 최종 정리 (0) 2023.11.24 회원가입 SHA-256 (2) 2023.11.20 예외 클래스의 계층구조 (1) 2023.11.20 Spring MVC 아키텍처 (0) 2023.11.20 @ExecptionHandler 코드 조금 더 보고 공부하기 (0) 2023.11.20