Optional 타입 사용하기

HwangJerry·2023년 5월 3일

Optional 클래스란?


자바에서 Optional 클래스는 값을 포함할 수도 있고 포함하지 않을 수도 있는 컨테이너 객체입니다. 주로 메소드의 반환값으로 사용되며, 반환값이 null일 가능성이 있는 경우에 대한 안전한 처리를 도와줍니다.

  • 명시적인 의도 표현:

    개발은 그 의도가 명확할수록 가독성과 유지보수성이 올라갑니다. Optional을 적용하면 다른 개발자에게 해당 메소드의 반환값이 null일 수 있다는 것을 명확하게 알려줄 수 있습니다.

  • NullPointerException 방지:

    Optional 클래스를 사용하면 명시적으로 값이 존재하는지 확인할 수 있으므로, 실수로 인한 NullPointerException을 방지할 수 있습니다.

  • 함수형 프로그래밍 지원:

    Optional 클래스는 함수형 프로그래밍 스타일을 지원하는 메소드들을 제공합니다. 예를 들어, map(), flatMap(), filter(), ifPresent(), orElse(), orElseGet() 등의 메소드를 사용할 수 있습니다. 이를 통해 코드를 더 간결하고 읽기 쉽게 작성할 수 있습니다.

예제


간단한 예제를 통해 Optional 클래스의 사용법을 살펴봅시다.

public class UserService {

    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public Optional<User> findUserById(Long userId) {
        return Optional.ofNullable(userRepository.findById(id));
    }
}

위 예제에서 findUserById() 메소드는 Optional를 반환합니다. 이를 통해 사용자가 존재하지 않을 수 있다는 것을 명시적으로 표현하고, null 처리를 안전하게 할 수 있습니다.


UserService userService = new UserService();
Optional<User> optionalUser = userService.findUserById(1);

if (optionalUser.isPresent()) {
    User user = optionalUser.get();
    System.out.println("User found: " + user.getName());
} else {
    System.out.println("User not found");
}

이렇게 Optional 클래스를 사용하면 가독성 향상으로 인해 개발자가 쉽게 대응할 수 있으므로 코드의 안전성을 높일 수 있습니다.

물론 무엇이든 남발하지 않고 적절히 사용하는 것이 중요합니다.

출처 : Optional 학습 자료

profile
알고리즘 풀이 아카이브

0개의 댓글