Optional 타입 사용하기

HwangJerry·2023년 5월 3일
0
post-custom-banner

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
알고리즘 풀이 아카이브
post-custom-banner

0개의 댓글