📅  最后修改于: 2023-12-03 15:40:33.097000             🧑  作者: Mango
程序员编写的Java代码在运行中可能会出现可选项为空(null)的情况,如果不进行判断处理,将会导致程序运行出错,甚至崩溃。因此,我们需要在代码中进行检查处理。
最简单的方式是直接检查可选项是否为空,如果为空则执行相应处理。
Optional<String> optionalValue = Optional.ofNullable(null);
if (optionalValue.isPresent()) {
System.out.println("Optional value is not null: " + optionalValue.get());
} else {
System.out.println("Optional value is null");
}
上述代码中,我们定义了一个可选项optionalValue,并对其进行了赋值。然后使用isPresent()方法检查是否为空,在if-else语句中进行处理。
除了直接检查可选项是否为空之外,我们还可以使用Optional提供的orElse()方法,设置一个默认值,在可选项为空的情况下返回默认值。
Optional<Integer> optionalInt = Optional.ofNullable(null);
Integer intValue = optionalInt.orElse(0);
System.out.println("Optional value: " + intValue);
上述代码中,我们定义了一个可选项optionalInt,并对其进行了赋值。然后使用orElse()方法,如果optionalInt为空则返回0。因此,最终intValue的值为0。
有时候获取默认值需要比较复杂的计算,此时我们可以使用orElseGet()方法,在可选项为空的情况下返回一个计算结果。
Optional<String> optionalStr = Optional.ofNullable(null);
String strValue = optionalStr.orElseGet(() -> {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return "default value: " + sdf.format(date);
});
System.out.println("Optional value: " + strValue);
上述代码中,我们定义了一个可选项optionalStr,并对其进行了赋值。然后使用orElseGet()方法,在可选项为空的情况下返回一个默认值。而这个计算默认值的过程需要获取当前系统时间,因此我们使用了Lambda表达式进行计算。
有时候我们认为可选项不应为空,如果却出现了这种情况,则应该抛出异常。此时可以使用orElseThrow()方法,在可选项为空的情况下抛出指定异常。
Optional<String> optionalStr = Optional.ofNullable(null);
String strValue = optionalStr.orElseThrow(() -> new IllegalArgumentException("Value cannot be null"));
System.out.println("Optional value: " + strValue);
上述代码中,我们定义了一个可选项optionalStr,并对其进行了赋值。然后使用orElseThrow()方法,在可选项为空的情况下抛出IllegalArgumentException异常。
代码检查空值是程序员必须掌握的技能之一。在Java中,我们可以使用Optional提供的方法,在可选项为空的情况下进行判断处理。检查的方式有多种,可以根据具体需求选择相应的方式。