📅  最后修改于: 2023-12-03 15:31:54.702000             🧑  作者: Mango
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 代码一定会更加优雅。