본문 바로가기
IT/Java

[Java] Optional이란??

by eddie_factory 2025. 5. 23.
반응형

Java 8부터 도입된 Optional은 NullPointerException을 방지하고 명시적으로 null 가능성을 표현할 수 있도록 도와주는 컨테이너 클래스입니다. Optional을 사용하면 null 체크를 보다 선언적으로 처리할 수 있습니다.

✅ Optional의 바람직한 사용 예

public Optional<String> getUserEmail(Long userId) {
    User user = userRepository.findById(userId);
    return Optional.ofNullable(user.getEmail());
}
  • Optional.ofNullable()을 통해 null이 될 수 있는 값을 안전하게 감쌉니다.
  • 클라이언트 코드에서는 isPresent(), ifPresent(), orElse() 등의 메서드로 처리할 수 있습니다.
getUserEmail(id).ifPresent(email -> sendEmail(email));

 

❌ Optional의 잘못된 사용 예

1. 필드에 Optional을 사용하는 경우

public class User {
    private Optional<String> name; // ❌ 지양해야 함
}

 

Optional은 메서드의 반환값에만 사용하는 것이 바람직합니다.
필드나 파라미터에 Optional을 사용하는 것은 오히려 코드의 복잡도만 증가시키며, 성능에도 불리할 수 있습니다.

2. null을 Optional에 넣는 경우

Optional<String> email = Optional.of(null); // ❌ NPE 발생!

 

 

결론

Optional을 적절히 사용하면 null 처리에 대한 명확성과 안전성을 높일 수 있습니다.
하지만 무분별하게 사용하면 오히려 코드가 복잡해질 수 있으므로, 용도에 맞게 신중하게 사용하는 것이 중요합니다.

반응형

댓글