Optional<T>
는 제네릭 클래스입니다. 제네릭 타입 T
는 Optional
이 감싸고 있는 객체의 타입을 나타냅니다. 제네릭을 사용함으로써 Optional
클래스는 다양한 타입의 객체를 감쌀 수 있게 됩니다.
Optional<T>
Optional<T>
는 자바 8에서 도입된 클래스입니다. 이는 값이 있을 수도 있고, 없을 수도 있는 상황을 표현하는 데 사용됩니다. 예를 들어, 데이터베이스 조회 결과가 없을 때 null
을 반환하는 대신, Optional.empty()
를 반환할 수 있습니다.
Optional<T>
의 주요 메서드isPresent()
:
Optional
객체에 값이 있는지 확인합니다.Optional<Student> optionalStudent = studentRepository.findById(id);
if (optionalStudent.isPresent()) {
// 값이 존재할 때
Student student = optionalStudent.get();
}
ifPresent(Consumer<? super T> action)
:
optionalStudent.ifPresent(student -> System.out.println(student.getName()));
orElse(T other)
:
Student student = optionalStudent.orElse(new Student("Default Name", 0));
orElseGet(Supplier<? extends T> other)
:
Student student = optionalStudent.orElseGet(() -> new Student("Default Name", 0));
orElseThrow(Supplier<? extends X> exceptionSupplier)
:
Student student = optionalStudent.orElseThrow(() -> new EntityNotFoundException("Student not found"));
Optional<T>
의 제네릭 타입 T
는 Optional
이 감싸고 있는 객체의 타입을 나타냅니다. 이를 통해 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>
는 제네릭 클래스입니다. 제네릭 타입 T
는 Optional
이 감싸고 있는 객체의 타입을 나타냅니다. 이를 통해 Optional
클래스는 다양한 타입의 객체를 감쌀 수 있습니다. Optional
클래스를 사용하면 값이 있을 수도 있고, 없을 수도 있는 상황을 안전하게 처리할 수 있습니다.