Java Optional or()方法及示例

Java Optional or()方法及示例

Java中 java.util.Optional类的 or() 方法是用来获取该Optional实例的任何值。 Java中的 Optional类 的or()方法用于获取这个Optional实例,如果有任何值存在。如果这个Optional实例中没有任何值,那么这个方法就会返回一个具有从指定Supplier那里生成的值的Optional实例。

语法

public Optional<T> or(Supplier<T> supplier)

参数: 该方法接受 Supplier 作为T类型的参数,生成一个具有从指定Supplier生成的值的Optional实例。

返回Supplier: 如果有任何值,该方法将返回这个 Optional实例 。如果这个Optional实例中没有任何值,那么这个方法将返回一个具有从指定Supplier生成的值的Optional实例。

异常。如果提供的函数是空的或者产生的结果是空的,这个方法会抛出NullPointerException。

下面的程序说明了or()方法。

注意:由于该方法是在Java 9中添加的,所以这些程序需要JDK 9来执行。

程序1 :

// Java program to demonstrate
// Optional.or() method
  
import java.util.*;
import java.util.function.*;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        // create a Optional
        Optional<Integer> op
            = Optional.of(9455);
  
        // print supplier
        System.out.println("Optional: "
                           + op);
  
        // or supplier
        System.out.println("Optional by or(() ->"
                           + " Optional.of(100)) method: "
                           + op.or(() -> Optional.of(100)));
    }
}

输出。

Optional: Optional[9455]
Optional by or(() -> Optional.of(100)) method: Optional[9455]

程序2

// Java program to demonstrate
// Optional.or() method
  
import java.util.*;
import java.util.function.*;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        // create a Optional
        Optional<Integer> op
            = Optional.empty();
  
        // print supplier
        System.out.println("Optional: "
                           + op);
  
        try {
  
            // or supplier
            System.out.println("Optional by or(() ->"
                               + " Optional.of(100)) method: "
                               + op.or(() -> Optional.of(100)));
        }
        catch (Exception e) {
            System.out.println(e);
        }
    }
}

输出。

Optional: Optional.empty
Optional by or(() -> Optional.of(100)) method: Optional[100]

参考资料: https://docs.oracle.com/javase/9/docs/api/java/util/Optional.html#or-java.util.function.Supplier-

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程