📌  相关文章
📜  Java中的 OptionalDouble orElseGet() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:31:54.702000             🧑  作者: Mango

Java中的 OptionalDouble orElseGet() 方法及示例

简介

OptionalDouble 类是 Java 8 中引入的一种 Optional 类型,用于表示一个可能存在的 double 类型值。在某些场景下,我们无法确定一个 double 值是否存在,此时使用 OptionalDouble 类可以在避免空指针异常的同时提高代码的可读性。

orElseGet() 方法是 OptionalDouble 类的一个方法,其作用是在 OptionalDouble 对象值为不存在时,使用一个供应函数生成一个默认值作为返回值。这个供应函数必须是一个函数接口,输入为空,输出为 double 类型值。

使用示例
import java.util.OptionalDouble;

public class OptionalDoubleDemo {

    public static void main(String[] args) {
        double defaultValue = 2.5;

        // 创建一个存在值的 OptionalDouble 对象
        OptionalDouble optionalDoubleWithValue = OptionalDouble.of(3.5);

        // 输出存在值的 OptionalDouble 对象值
        System.out.println("OptionalDouble with value: " + optionalDoubleWithValue.getAsDouble());

        // 使用 orElseGet() 获取存在值的 OptionalDouble 对象值,不会生成默认值
        double valueFromOptionalDouble = optionalDoubleWithValue.orElseGet(() -> Double.NaN);
        System.out.println("Value from OptionalDouble with value using orElseGet(): " + valueFromOptionalDouble);

        // 创建一个不存在值的 OptionalDouble 对象
        OptionalDouble optionalDoubleWithoutValue = OptionalDouble.empty();

        // 使用 orElseGet() 获取不存在值的 OptionalDouble 对象值,会生成默认值
        double defaultValueFromOptionalDouble = optionalDoubleWithoutValue.orElseGet(() -> defaultValue);
        System.out.println("Value from OptionalDouble without value using orElseGet(): " + defaultValueFromOptionalDouble);
    }
}

代码输出:

OptionalDouble with value: 3.5
Value from OptionalDouble with value using orElseGet(): 3.5
Value from OptionalDouble without value using orElseGet(): 2.5

以上示例中,我们首先创建了一个存在值的 OptionalDouble 对象 optionalDoubleWithValue,然后使用 getAsDouble() 方法获取其值并输出。

接着,我们使用 orElseGet() 方法获取这个存在值的 OptionalDouble 返回值,并通过一个供应函数,即 () -> Double.NaN,生成了一个默认值并输出。由于这个 OptionalDouble 存在值,所以生成的默认值不会被使用,而是直接返回了这个存在值的 OptionalDouble 值 3.5。

接下来,我们创建了一个不存在值的 OptionalDouble 对象 optionalDoubleWithoutValue,并使用 orElseGet() 方法获取其返回值。由于这个 OptionalDouble 不存在值,所以生成的默认值会被使用,即 2.5。

总结

OptionalDouble 类是 Java 8 中非常实用的一个工具类,可以避免空指针异常并提高代码可读性。orElseGet() 方法是 OptionalDouble 类的一个重要方法,可以在 OptionalDouble 对象不存在值时使用一个供应函数生成一个默认值返回。如果你熟练掌握了 OptionalDouble 类及其方法的使用,相信你的 Java 代码一定会更加优雅。