当前位置: 首页 > news >正文

java Optional

我还没用过java8的一些语法,有点老古董了,记录下Optional怎么用。 

从源码看,Optional内部持有一个对象, 有一些api对这个对象进行判空处理。 

静态方法of ,生成Optional对象, 但这个value不能为空,因为构造器判断value为空直接抛异常。


如果值可以为空,调用下面的ofNullable方法生成Optional。


常用方法:

1、get方法,value确定非空再调用该方法,可以强制开发处理空值。


2、isPresent、isEmpty方法, 判断是否有值


3、ifPresent  值非空时,传该值执行一个操作。

public void ifPresent(Consumer<? super T> action) {if (this.value != null) {action.accept(this.value);}
}

4、ifPresentOrElse方法, 值非空时执行一个操作,否则执行另一个操作

5、filter 方法,判断值是否满足一个条件

6、map 方法, 转化数据。

7、flatMap方法,同map,但会检查转化后的数据是否为空,转化为null会抛异常。

8、当Optional存的值为空,则生成一个Optional(值仍然可能为空)

9、stream方法,生成流

10、orElseGet ,获取值,值为null则生成一个值

11、 还有空值就抛异常的方法。

支持链式调用,可与方法引用配合使用,比较方便,


Optional.ofNullable(user).map(User::getName).filter(name -> !name.isEmpty()).orElse("Unknown");

总结:Optional 主要是对数据进行各种处理,比如空值处理,数据转化、数据过滤、异常处理等。

相关文章:

  • 【MQ篇】RabbitMQ之死信交换机!
  • OpenCV 图形API(65)图像结构分析和形状描述符------拟合二维点集的直线函数 fitLine2D()
  • FlinkUpsertKafka深度解析
  • 基础的贝叶斯神经网络(BNN)回归
  • 零基础小白如何上岸数模国奖
  • 大学之大:伦敦政治经济学院2025.4.27
  • 【音视频】FFmpeg过滤器框架分析
  • 人工智能—— K-means 聚类算法
  • Spring Cloud Alibaba 整合 Sentinel:实现微服务高可用防护
  • Awesome-Embodied-AI: 具身机器人的资源库
  • [论文梳理] 足式机器人规划控制流程 - 接触碰撞的控制 - 模型误差 - 自动驾驶车的安全合规(4个课堂讨论问题)
  • 【读写视频】MATLAB详细代码
  • 简述删除一个Pod流程?
  • 【计算机组成原理实验】实验一 运算部件实验_加法器及计算机性能指标
  • Redis超详细入门教程(基础篇)
  • 【每日随笔】文化属性 ② ( 高维度信息处理 | 强者思维形成 | 认知重构 | 资源捕获 | 进化路径 )
  • Spark SQL核心概念与编程实战:从DataFrame到DataSet的结构化数据处理
  • Spark-Streaming核心编程(四)总结
  • 关于堆栈指针的那些事 | bootloader 如何跳转app
  • 如何解决无训练数据问题:一种更为智能化的解决方案
  • 深圳一季度GDP为8950.49亿元,同比增长5.2%
  • 影子调查|23岁男子驾照拟注销背后的“被精神病”疑云
  • 专访|伊朗学者:美伊核谈不只是改革派立场,但伊朗不信任美国
  • 文化体验+商业消费+服务创新,上海搭建入境旅游新模式
  • 持续更新丨伊朗港口爆炸事件已致561人受伤
  • 谢震业、梁小静等名将在列,世界田联接力赛中国队名单出炉