[Java] Optional이란?

rekv·2025년 2월 5일

Optional이란?

Java 8부터 도입된 Optional은 값이 없는 경우를 표현하기 위한 클래스이다.
Optional 클래스는 제네릭을 사용하여 어떤 타입의 객체도 감싸서 담을 수 있다.

Optional 객체는 값이 존재할 수도 있고, 없을 수도 있다.
이는 NullPointerException 예외를 방지할 수 있고, 코드의 안정성을 높이며 가독성을 향상시킨다.

Optional 객체 생성

Optional 객체를 생성하려면, of(), ofNullable(), empty() 등의 정적 팩토리 메서드를 사용할 수 있다.

  • of() 메서드 : 값이 null이 아닌 경우에만 Optional 객체를 생성
  • ofNullable() 메서드 : 값이 null인 경우에도 Optional 객체를 생성
  • empty() 메서드 : 값을 갖지 않는 빈(empty) Optional 객체를 생성

Optional 객체 접근

Optional 객체에 접근하기 위해서는 get() 메서드를 사용한다.
하지만 이 방법은 값이 없는 경우에 예외가 발생할 수 있으므로, isPresent() 메서드를 사용하여
값이 존재하는지 여부를 먼저 확인하는 것이 좋다.

또한, Optional 객체에 값이 있을 경우에는
orElse()orElseGet() 메서드를 사용하여 대체 값을 제공할 수 있다.

다른 메서들과의 연결

Optional 객체는 다른 메서드들과 연결하여 사용할 수 있다.
예를 들어, map() 메서드를 사용하여 Optional 객체의 값을 변환하거나,
filter() 메서드를 사용하여 Optional 객체의 값을 검사할 수 있다.

예시

public Product getProductById(Long idx){
    Optional<Product> result = productRepository.findById(idx);
    if(result.isPresent()){
      Product product = result.get();
      return product;
    }
    return null;
  }
public StudentDto.Response findByName(String name){
    Optional<Student student = studentRepository.findByName(name).orElseThrow();
    return StudentDto.Response.from(student);
  }

0개의 댓글