Java Optional orElseGet()方法及示例

Java Optional orElseGet()方法及示例

Java中 java.util. Optional类的 orElseGet() 方法用于获取该Optional实例的值。 在Java中的 Optional类 的orElseGet()方法是用来获取这个Optional实例的值(如果存在)。如果该Optional实例中没有值,那么该方法将返回从指定供应商那里生成的值。

语法

public T orElseGet(Supplier<T> supplier)

参数: 该方法接受 supplier 作为T类型的参数,以便在这个Optional实例中没有值的情况下生成一个值来返回。

返回供应商: 如果存在的话,此方法返回此可选实例的 。如果这个Optional实例中没有值,那么这个方法将返回从指定的供应商那里生成的值。

异常。如果这个Optional实例中没有值,这个方法会抛出NullPointerException。

下面的程序说明了orElseGet()方法:
程序1 :

// Java program to demonstrate
// Optional.orElseGet() 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);
  
        // orElseGet supplier
        System.out.println("Value by orElseGet"
                           + "(Supplier) method: "
                           + op.orElseGet(
                                 () -> (int)(Math.random() * 10)));
    }
}

输出。

Optional: Optional[9455]
Value by orElseGet(Supplier) method: 9455

程序2

// Java program to demonstrate
// Optional.orElseGet() 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 {
  
            // orElseGet supplier
            System.out.println("Value by orElseGet"
                               + "(Supplier) method: "
                               + op.orElseGet(
                                     () -> (int)(Math.random() * 10)));
        }
        catch (Exception e) {
            System.out.println(e);
        }
    }
}

输出。

Optional: Optional.empty
Value by orElseGet(Supplier) method: 1

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程