📜  检查可选是否为空 java (1)

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

Java代码检查空值

程序员编写的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提供的orElse()方法,设置一个默认值,在可选项为空的情况下返回默认值。

Optional<Integer> optionalInt = Optional.ofNullable(null);

Integer intValue = optionalInt.orElse(0);

System.out.println("Optional value: " + intValue);

上述代码中,我们定义了一个可选项optionalInt,并对其进行了赋值。然后使用orElse()方法,如果optionalInt为空则返回0。因此,最终intValue的值为0。

Optional.orElseGet()

有时候获取默认值需要比较复杂的计算,此时我们可以使用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表达式进行计算。

Optional.orElseThrow()

有时候我们认为可选项不应为空,如果却出现了这种情况,则应该抛出异常。此时可以使用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提供的方法,在可选项为空的情况下进行判断处理。检查的方式有多种,可以根据具体需求选择相应的方式。