Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 9의 Optional 클래스에 추가된 새로운 메소드는 무엇입니까?


선택 수업 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