>  기사  >  Java  >  Java 9에서 Optional.ifPresentOrElse()와 Optional.or() 메소드의 차이점은 무엇입니까?

Java 9에서 Optional.ifPresentOrElse()와 Optional.or() 메소드의 차이점은 무엇입니까?

PHPz
PHPz앞으로
2023-08-26 20:49:02680검색

Java 9中Optional.ifPresentOrElse()和Optional.or()方法之间的区别是什么?

Java 9 버전에서는 기능 개선을 위해 Optional.ifPresentOrElse()Optional.or() 메서드가 도입되었습니다. Optional.ifPresentOrElse() 메서드는 값이 있는지 확인하고, 있으면 해당 값에 대한 작업을 적용하고, 그렇지 않으면 no-op를 반환하는 반면, Optional.or() 메서드는 값이 있는지, 존재하는지 확인합니다. 값이 포함된 옵션을 반환하고, 그렇지 않으면 공급자 함수에 적용된 Optional을 반환합니다. Optional.ifPresentOrElse() 메서드에는 ConsumerRunnable이라는 두 개의 매개 변수가 포함되어 있는 반면, Optional.or() 메서드에는 Supplier라는 하나의 매개 변수만 포함되어 있습니다.

Optional.ifPresentOrElse() 구문:

<strong>public void ifPresentOrElse(Consumer<? super T><!--? super T--> action, Runnable emptyAction)</strong>

Example

의 중국어 번역은 다음과 같습니다.

Example

import java.util.Optional;
import java.util.concurrent.atomic.AtomicInteger;

public class IfPresentOrElseMethodTest {
   public static void main(String args[]) {
      optionalIsPresent();
      optionalIsEmpty();
   }
   private static void optionalIsPresent() {
      <strong>Optional<String></strong> optional = <strong>Optional.of</strong>("Test");
      AtomicInteger successCounter = new AtomicInteger();
      AtomicInteger emptyOptionalsCounter = new AtomicInteger();

      optional.<strong>ifPresentOrElse</strong>(x -> successCounter.incrementAndGet(), () ->       emptyOptionalsCounter.incrementAndGet());

      System.out.println(successCounter.get());
      System.out.println(emptyOptionalsCounter.get());
   }
   private static void optionalIsEmpty() {
      Optional optional = <strong>Optional.empty()</strong>;
      AtomicInteger successCounter = new AtomicInteger();
      AtomicInteger emptyOptionalsCounter = new AtomicInteger();

      optional.<strong>ifPresentOrElse</strong>(x -> successCounter.incrementAndGet(), () -> emptyOptionalsCounter.incrementAndGet());

      System.out.println(successCounter.get());
      System.out.println(emptyOptionalsCounter.get())
   }
}

Output

<strong>1
0
0
1</strong>

Optional.or():

<strong>public Optional<T> or(Supplier<? extends Optional<? extends T<!--? extends Optional<? extends T-->>> supplier)</strong>

Examp의 중국어 번역 르

다음으로 번역됨:

Example

import java.util.Optional;

public class OptionalOrMethodTest {
   public static void main(String args[]) {
      optionalIsPresent();
      optionalIsEmpty();
   }
   private static void optionalIsPresent() {
      <strong>Optional<String></strong> optional1 = <strong>Optional.of</strong>("Test1");
      <strong>Optional<String></strong> optional2 = <strong>Optional.of</strong>("Test2");

      <strong>Optional<String</strong><strong>></strong> optional3 = <strong>optional1.or</strong>(() -> optional2);
      System.out.println(optional3.get());
   }
   private static void optionalIsEmpty() {
      <strong>Optional<String></strong> optional1 = <strong>Optional.empty()</strong>;
      <strong>Optional<String></strong> optional2 = <strong>Optional.of</strong>("Test2");

      <strong>Optional<String></strong> optional3 = <strong>optional1.or</strong>(() -> optional2);
      System.out.println(optional3.get());
   }
}

Output

<strong>Test1
Test2</strong>

위 내용은 Java 9에서 Optional.ifPresentOrElse()와 Optional.or() 메소드의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제