제네릭과 Optional

CosmoNumb·2024년 7월 23일
0

java

목록 보기
17/24

Optional<T>는 제네릭 클래스입니다. 제네릭 타입 TOptional이 감싸고 있는 객체의 타입을 나타냅니다. 제네릭을 사용함으로써 Optional 클래스는 다양한 타입의 객체를 감쌀 수 있게 됩니다.

제네릭 클래스 Optional<T>

Optional<T>는 자바 8에서 도입된 클래스입니다. 이는 값이 있을 수도 있고, 없을 수도 있는 상황을 표현하는 데 사용됩니다. 예를 들어, 데이터베이스 조회 결과가 없을 때 null을 반환하는 대신, Optional.empty()를 반환할 수 있습니다.

Optional<T>의 주요 메서드

  1. isPresent():

    • Optional 객체에 값이 있는지 확인합니다.
    Optional<Student> optionalStudent = studentRepository.findById(id);
    if (optionalStudent.isPresent()) {
        // 값이 존재할 때
        Student student = optionalStudent.get();
    }
  2. ifPresent(Consumer<? super T> action):

    • 값이 존재할 때 특정 동작을 수행합니다.
    optionalStudent.ifPresent(student -> System.out.println(student.getName()));
  3. orElse(T other):

    • 값이 존재하면 그 값을 반환하고, 그렇지 않으면 다른 값을 반환합니다.
    Student student = optionalStudent.orElse(new Student("Default Name", 0));
  4. orElseGet(Supplier<? extends T> other):

    • 값이 존재하면 그 값을 반환하고, 그렇지 않으면 다른 값을 계산하여 반환합니다.
    Student student = optionalStudent.orElseGet(() -> new Student("Default Name", 0));
  5. orElseThrow(Supplier<? extends X> exceptionSupplier):

    • 값이 존재하면 그 값을 반환하고, 그렇지 않으면 예외를 던집니다.
    Student student = optionalStudent.orElseThrow(() -> new EntityNotFoundException("Student not found"));

제네릭의 사용 예

Optional<T>의 제네릭 타입 TOptional이 감싸고 있는 객체의 타입을 나타냅니다. 이를 통해 Optional 클래스는 다양한 타입의 객체를 감쌀 수 있습니다.

예를 들어, Optional<Student>Student 객체를 감싸고 있을 수도 있고, 비어 있을 수도 있는 상황을 표현합니다.

예시 코드

import java.util.Optional;

public class OptionalExample {
    public static void main(String[] args) {
        Optional<String> optionalString = Optional.of("Hello, World!");
        if (optionalString.isPresent()) {
            System.out.println(optionalString.get());
        }

        Optional<String> emptyOptional = Optional.empty();
        String result = emptyOptional.orElse("Default Value");
        System.out.println(result);
    }
}

위의 코드에서:

  • Optional<String>String 타입의 객체를 감쌀 수 있습니다.
  • optionalString은 "Hello, World!" 문자열을 감싸고 있습니다.
  • emptyOptional은 비어 있는 Optional 객체입니다.
  • orElse 메서드는 Optional이 비어 있을 때 "Default Value"를 반환합니다.

요약

Optional<T>는 제네릭 클래스입니다. 제네릭 타입 TOptional이 감싸고 있는 객체의 타입을 나타냅니다. 이를 통해 Optional 클래스는 다양한 타입의 객체를 감쌀 수 있습니다. Optional 클래스를 사용하면 값이 있을 수도 있고, 없을 수도 있는 상황을 안전하게 처리할 수 있습니다.

0개의 댓글