본문 바로가기

공부/개념 정리

[Java] Optional을 쓰는 이유

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()메서드로 빈 객체를 만들어 준다고함.