PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

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

PHPz
PHPz 转载
2023-08-26 20:49:02 378浏览

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

在Java 9版本中,引入了Optional.ifPresentOrElse()Optional.or()方法来改进其功能。 Optional.ifPresentOrElse()方法检查值是否存在,如果存在则应用具有值的操作,否则返回空操作,而Optional.or()方法检查值是否存在,如果存在则返回包含值的选项,否则返回应用于Supplier函数的Optional。 Optional.ifPresentOrElse()方法包含两个参数,ConsumerRunnable,而Optional.or()方法只包含一个参数,Supplier

public void ifPresentOrElse(Consumer action, Runnable emptyAction)

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() {
      Optional optional = Optional.of("Test");
      AtomicInteger successCounter = new AtomicInteger();
      AtomicInteger emptyOptionalsCounter = new AtomicInteger();

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

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

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

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

输出

1
0
0
1

Optional.or()的语法:

public Optional or(Supplier>> supplier)

Example

的中文翻译为:

示例

import java.util.Optional;

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

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

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

输出

Test1
Test2

以上就是Java 9中Optional.ifPresentOrElse()和Optional.or()方法之间的区别是什么?的详细内容,更多请关注php中文网其它相关文章!

声明:本文转载于:tutorialspoint,如有侵犯,请联系admin@php.cn删除