언어 ⏎/java

Optional

LeeDiculous 2022. 12. 29. 18:00

개발을 할때 우리가 자주 접하는 예외중 하나인 NullPointerException. 이 무시무시한 예외를 피하려면 null 여부를 검사해야한다.

Optional<T>는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NullPointerException이 발생하지 않도록 도와준다.

요즘에는 객체를 Optional로 한번 감싸서 null 여부를 검사 할 수 있게 하는 추세이다.


Optional의 다양한 메소드

Optional.empty() - 값이 Null인 경우

Optional은 Wrapper 클래스이기 때문에 값이 없을 수도 있다. 이때 사용할 수 있다.

Optional.of() - 값이 Null이 아닌 경우

만약 어떤 데이터가 절대 null이 아니라면 Optional.of()로 생성할 수 있다. 만약 Optional.of()로 Null을 저장하려고 하면 예외가 발생 한다.

Optional.ofNullable() - 값이 Null일 수도, 아닐 수도 있는 경우

만약 어떤 데이터가 null이 올 수도 있고, 아닐수도 있는 경우에 사용할 수 있다.

이후에 orElse 또는 orElseGet 메소드를 이용해 값이 없는 경우라도 안전하게 값을 가져올 수 있다.

public Optional<Member> findByLoginId(String loginId) {
        List<Member> all = findAll();

        for (Member member : all) {
            if (member.getLoginId().equals(loginId)) {
                return Optional.of(member); //Optional.of() 사용
            }
        }
        return Optional.empty(); //Optional.empty() 사용