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 클래스를 사용하면 값이 있을 수도 있고, 없을 수도 있는 상황을 안전하게 처리할 수 있습니다.