和空指针异常说再见,Java Optional的使用
2023-12-18 18:31:50
Java Optional
在Java中,Optional是一个容器对象,用于表示一个值存在或不存在。它可以帮助我们更好地处理可能为空的情况,避免空指针异常。本文将介绍Java Optional的常用API和使用场景。
常用API
创建Optional对象
Optional<String> optional1 = Optional.of("Hello"); // 值必须非空,否则会抛出NullPointerException
Optional<String> optional2 = Optional.ofNullable(null); // 值可以为空
Optional<String> emptyOptional = Optional.empty(); // 创建一个空的Optional对象
判断值是否存在
Optional<String> optional = Optional.of("Hello");
boolean isPresent = optional.isPresent(); // 判断值是否存在
获取值
Optional<String> optional = Optional.of("Hello");
String value = optional.get(); // 获取值,如果值不存在会抛出NoSuchElementException
String valueOrDefault = optional.orElse("Default"); // 获取值,如果值不存在则返回默认值
String valueOrThrow = optional.orElseThrow(() -> new RuntimeException("Value not present")); // 获取值,如果值不存在则抛出异常
转换值
Optional<String> optional = Optional.of("Hello");
Optional<Integer> length = optional.map(String::length); // 转换值
使用场景
避免空指针异常
String name = null;
Optional<String> optionalName = Optional.ofNullable(name);
String upperCaseName = optionalName.map(String::toUpperCase).orElse("Unknown");
更清晰的API设计
public Optional<User> findUserById(Long id) {
// 查询用户的逻辑
if (userExists) {
return Optional.of(user);
} else {
return Optional.empty();
}
}
Optional<User> userOptional = findUserById(123);
userOptional.ifPresent(user -> System.out.println(user.getName()));
链式调用
Optional<String> result = Optional.of("Hello")
.map(String::toUpperCase)
.filter(s -> s.length() > 5)
.flatMap(s -> Optional.of("Result: " + s));
Java Optional提供了一种优雅地处理可能为空的情况的方式,可以在编写代码时更加安全和清晰。通过合理地使用Optional,我们可以避免空指针异常,提高代码的可读性和可维护性。在实际开发中,我们可以根据具体的场景和需求,灵活地运用Java Optional。
文章来源:https://blog.csdn.net/weixin_44808225/article/details/135067675
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!