Optional 클래스는 NPE를 방지하기 위해 사용되는 클래스.
지난 과제에서 NPE가 발생해서 결국 잡지 못하고 실패를 했기에 너무 반가운 기능!
Optional<T>은 Null일 수 도 있는 개체를 감싸주는 Wrapper 클래스이다. 반환값이 객체인 메서드를 호출하고 받는 반환값이 Null일 경우 NPE(NullPointExcepetion)이 발생하는데 이를 Optional 객체를 감싸서 더욱 쉽게 예외 처리가 가능하다.
Optional<User> checkUsername = userRepository.findByUsername(username);
if (checkUsername.isPresent()) {
throw new IllegalArgumentException("중복된 사용자가 존재합니다.");
}
이렇게 isPresent()메서드를 이용하여 옵셔널로 감싼 객체가 Null인지 값인지 존재하는지 T/F로 반환한다. 위에서는 중복된 데이터를 찾기 위해 객체가 존재할 때 예외처리를 해줬지만, NULL일때 예외처리를 하는데 사용할 수도 있다.
또한 만약에 Optional로 감싼 객체를 null로 만들고 싶다면, .empty()메서드를 통해 빈 객체를 생성한다. Optional을 사용하는 이유가 더이상 null을 사용하지 말자고 쓰는것 이기 때문에 NULL이 아닌 .empty()메서드로 빈 객체를 만들어 준다고함.
'공부 > 개념 정리' 카테고리의 다른 글
[Spring] Entity 연관관계 (1) | 2023.11.15 |
---|---|
[Spring] Filter의 개념 (0) | 2023.11.13 |
[Spring] Authentication과 Authorization (0) | 2023.11.10 |
[Spring] Bean의 쓰임과 수동 등록에 대해 (0) | 2023.11.10 |
Java) Comparable과 Comparator의 차이에 대해 (1) | 2023.10.18 |