선택 수업 null이 아닌 을 포함하거나 포함하지 않을 수 있는 컨테이너를 제공합니다. 값. 이 Optional 클래스는 NullPointerException 이 발생하는 코드의 위치 수를 줄이기 위해 Java 8에 도입되었습니다. 생성될 수 있습니다. Java 9는 Optional 클래스에 세 가지 새로운 메서드를 추가했습니다. or() , ifPresentOrElse() 및 stream() 기본값 을 처리하는 데 도움이 됩니다. 가치.
Optional.or()
또는() Java 9에 도입된 메소드이며 이 메소드의 매개변수는 기능 인터페이스 공급자입니다. . 이 방법은 항상 선택 사항 을 제공합니다. 비어 있지 않은 개체입니다. Optional 객체가 비어 있지 않으면 Optional 을 반환합니다. 개체 자체. 그렇지 않으면 공급자 가 생성합니다.
예
import java.io.IOException; import java.util.Optional; public class OptionalOrMethodTest { public static void main(String[] args) throws IOException { String str = null; Optional<String> opt = Optional.ofNullable(str); Optional<String> result = opt.or(() -> Optional.of("Adithya")); System.out.println(result); } }
출력
Optional[Adithya]
Optional.ifPresentOrElse()
ifPresentOrElse() Java 9에 도입된 메소드입니다. ifPresent()와 유사합니다. 한 가지 차이점이 있는 방법은 실행 가능 매개변수. 선택 사항 인 경우 개체가 비어 있고 실행 가능 개체 인터페이스를 실행할 수 있습니다.
예시
import java.util.Optional; public class OptionalIfPresentOrElseTest { public static void main(String[] args) { String str = null; Optional<String> opt = Optional.ofNullable(str); opt.ifPresentOrElse( x -> System.out.println(x), () -> System.out.println("No value")); } }
출력
No value
Optional.stream()
Optional.stream() 메서드는 Java 9부터 지원됩니다. 이 메서드는 선택 사항 에서 새 스트림 개체를 만드는 데 사용할 수 있습니다. 물체. Optional 객체에 값이 포함되어 있으면 해당 값이 포함된 스트림 객체를 반환합니다.
예시
import java.io.IOException; import java.util.List; import java.util.Optional; import java.util.stream.Stream; public class OptionalStreamMethodTest { public static void main(String[] args) throws IOException { List<Optional<String>> list = List.of( Optional.of("Jai"), Optional.empty(), Optional.of("Adithya")); Stream<String> stream = list.stream().flatMap(Optional::stream); stream.forEach(System.out::println); } }
출력
Jai Adithya