Administrator
发布于 2023-06-24 / 18 阅读 / 0 评论 / 0 点赞

JAVA中optional 常用用法

Optional 是 Java 8 引入的一个类,用于解决空指针异常(NullPointerException)的问题,并提供了一些便利的方法来处理可能为空的值。下面是 Optional 的一些常用用法:

创建 Optional 对象:

java
Optional<String> optionalEmpty = Optional.empty(); // 创建一个空的 Optional 对象
Optional<String> optionalValue = Optional.of("Hello"); // 创建一个包含非空值的 Optional 对象
Optional<String> optionalNullable = Optional.ofNullable(null); // 创建一个包含可能为空值的 Optional 对象

判断是否包含值:

Optional<String> optional = Optional.of("Hello");

boolean isPresent = optional.isPresent(); // 判断 Optional 是否包含值,返回 true
boolean isEmpty = optional.isEmpty(); // 判断 Optional 是否为空,返回 false

获取值:

Optional<String> optional = Optional.of("Hello");

String value = optional.get(); // 获取 Optional 中的值,如果值为空会抛出 NoSuchElementException 异常
String valueOrDefault = optional.orElse("Default"); // 获取 Optional 中的值,如果值为空则返回默认值
String valueOrSupplier = optional.orElseGet(() -> generateValue()); // 获取 Optional 中的值,如果值为空则使用提供的供应函数生成值

值存在时执行操作:

Optional<String> optional = Optional.of("Hello");

optional.ifPresent(value -> System.out.println("Value: " + value)); // 如果 Optional 中存在值,则执行传入的操作

转换值:

Optional<String> optional = Optional.of("Hello");

Optional<Integer> lengthOptional = optional.map(value -> value.length()); // 将 Optional 中的值进行映射转换
Optional<String> upperCaseOptional = optional.flatMap(value -> Optional.of(value.toUpperCase())); // 将 Optional 中的值进行扁平映射转换

Optional 提供了一种优雅的方式来处理可能为空的值,避免了繁琐的空值判断。通过使用 Optional,我们可以更清晰地表达代码的意图,并减少空指针异常的风险。然而,需要注意的是,在使用 Optional 时,应根据实际情况谨慎选择合适的方法,避免过度使用或滥用 Optional,以免增加代码的复杂性。


评论