Optional<T>
지네릭 클래스로 T타입의 객체를 감싸는 래퍼 클래스.
최종연산결과를 Optional 객체에 담아서 반환해 반환결과가 null인지 if문으로 체크하는대신에 Optional에 정의된 메서드를 통해 간단히 처리할 수 있다.
https://standout.tistory.com/1393
Generics 지네릭스, 형변환을 생략하다
Generics 지네릭스 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일시 타입체크를 해주는 기능 타입안정성을 제공하며 형변환을 생략할 수 있어 코드가 간결해진다. import java.util
standout.tistory.com
Optional객체는 of()또는 null일 가능성이 있으면 ofNullable()을 사용한다.
Optional<T>타입의 참조변수를 기본값으로 초기화할때는 null로 초기화할수있지만 empty()를 사용하는 것이 바람직하다.
Optional객체에 저장된 값을 가져올때는 get()을 사용한다. null일때는 NoSuchElementException이 발생하며 이를 대비해 orElse()로 값을 지정할 수 있다.
import java.util.Optional;
public class Main {
public static void main(String[] args) {
// Optional 객체 초기화: 값이 있을 경우
Optional<String> optionalWithValue = Optional.of("Hello");
// Optional 객체 초기화: 값이 없을 경우
Optional<String> optionalEmpty = Optional.empty();
// Optional 객체 초기화: 값이 null일 가능성이 있는 경우
String nullableValue = null;
Optional<String> optionalNullable = Optional.ofNullable(nullableValue);
// 출력
printOptional(optionalWithValue);
printOptional(optionalEmpty);
printOptional(optionalNullable);
}
public static void printOptional(Optional<String> optional) {
if (optional.isPresent()) {
System.out.println("Optional value: " + optional.get());
} else {
// 값이 없는 경우 대체값으로 "Default Value"를 사용
String defaultValue = "Default Value";
System.out.println("Optional is empty, using default value: " + defaultValue);
// orElse 메소드를 사용하여 대체값 설정
System.out.println("Optional value: " + optional.orElse(defaultValue));
}
}
}
[출력결과]
Optional value: Hello
Optional is empty, using default value: Default Value
Optional value: Default Value
Optional is empty, using default value: Default Value
Optional value: Default Value
https://standout.tistory.com/1459
Optional 객체가 값이 없을경우 대체값을 설정하기: orElse() orElseThrow()
orElse()와 orElseThrow() Optional 객체가 값이 없을경우 대체값을 설정한다. import java.util.NoSuchElementException; import java.util.Optional; public class Main { public static void main(String[] args) { // Optional 객체 초기화: 값
standout.tistory.com
https://standout.tistory.com/1460
Optional객체에 중간연산자 사용하기: filter() map() flatMap() isPresent() ifPresent() findAny() findFirst()
Optional객체에도 filter() map() flatMap()을 사용할 수 있다. https://standout.tistory.com/1446 스트림의 연산 - 중간연산 distinct, filter, limit, skip, peek sorted map mapToDouble mapToInt mapToLong flatMap flatma 앞서 스트림과 스
standout.tistory.com