Optional参数类使用

news/2024/10/21 3:16:31/

 目录

介绍

使用

常用方法

是否为空

对象比较

Optional 是一个对象容器,具有以下两个特点:

使用

  1. 创建

2. 获取:

3. 判断:

4. 过滤:

5. 映射:


介绍

        在使用值判断的时候使用方便

使用

import java.util.Optional;Optional<String> op = Optional.of("cc");Optional<String> op2 = Optional.ofNullable("cc");Optional.ofNullable("cc").ifPresent(e->{log.info("1");});

常用方法

是否为空

boolean isPresent() {return value != null;}

 

对象比较

public boolean equals(Object obj) {

Optional 是一个对象容器,具有以下两个特点:

  •     提示用户要注意该对象有可能为null
  •     简化if else代码

   

使用

  1. 创建

  •     Optional.empty(): 创建一个空的 Optional 实例
  •     Optional.of(T t):创建一个 Optional 实例,当 t为null时抛出异常     
  •     Optional.ofNullable(T t):创建一个 Optional 实例,但当 t为null时不会抛出异常,而是返回一个空的实例

2. 获取:

 get():获取optional实例中的对象,当optional 容器为空时报错

 

3. 判断:

  •     isPresent():判断optional是否为空,如果空则返回false,否则返回true
  •     ifPresent(Consumer c):如果optional不为空,则将optional中的对象传给Comsumer函数
  •     orElse(T other):如果optional不为空,则返回optional中的对象;如果为null,则返回 other 这个默认值
  •     orElseGet(Supplier<T> other):如果optional不为空,则返回optional中的对象;如果为null,则使用Supplier函数生成默认值other
  •     orElseThrow(Supplier<X> exception):如果optional不为空,则返回optional中的对象;如果为null,则抛出Supplier函数生成的异常

4. 过滤:

    filter(Predicate<T> p):如果optional不为空,则执行断言函数p,如果p的结果为true,则返回原本的optional,否则返回空的optional 

5. 映射:

    map(Function<T, U> mapper):如果optional不为空,则将optional中的对象 t 映射成另外一个对象 u,并将 u 存放到一个新的optional容器中。

    flatMap(Function< T,Optional<U>> mapper):跟上面一样,在optional不为空的情况下,将对象t映射成另外一个optional

    区别:map会自动将u放到optional中,而flatMap则需要手动给u创建一个optional

ok

 

持续更新


http://www.ppmy.cn/news/61359.html

相关文章

玄子Share - Tomcat 9 安装配置教程(含安装包)

玄子Share - Tomcat 9 安装配置教程&#xff08;含安装包&#xff09; 下载 下载链接 官网 https://tomcat.apache.org/ 下载教程 进入 Tomcat 官网&#xff0c;点击左侧导航栏&#xff0c;选择需要的版本下载。这里按照课程要求选择tomcat 9的版本 Mirrors&#xff1a;选…

【消息中间件】如何解决RocketMQ消息堆积的问题

文章目录 一、背景二、MQ消息堆积三、消息堆积常见于以下几种情况&#xff1a;四、解决上述问题需要做到五、如何解决消息堆积和延迟问题 一、背景 消息处理流程中&#xff0c;如果客户端的消费速度跟不上服务端的发送速度&#xff0c;未处理的消息会越来越多&#xff0c;这部…

2023年度国家自然科学基金项目申请初审结果公布~

2023年4月28日&#xff0c;国家自然科学基金委员会发布了《关于公布2023年度国家自然科学基金项目申请初审结果的通告》&#xff0c;2023年度国家自然科学基金项目申请初审结果公布&#xff01;2023年度项目申请集中接收期间&#xff0c;自然科学基金委共接收各类型项目申请304…

被清理的文件怎么恢复

我们都知道&#xff0c;经常使用电脑&#xff0c;就会产生大量的文件&#xff0c;这些不仅会占用硬盘空间&#xff0c;还会影响到电脑的使用性&#xff0c;而想要给电脑有一个良好的运行状态&#xff0c;就需要我们定期清理电脑中的垃圾文件。但随着文件的越来越多&#xff0c;…

ES6之箭头函数

文章目录 前言一、定义二、简化1.当函数参数只有一个时2.当函数体只有一条return语句时 三、注意1.箭头函数的this2.不能作为构造函数实例化对象3.不能使用argument变量 总结 前言 简单的讲&#xff0c;箭头函数是将原function关键字和函数名删掉的一种简写函数形式。 一、定义…

JSP基于Iptables图形管理工具的设计与实现(源代码+论文)

Netfilter/Iptables防火墙是Linux平台下的包过滤防火墙&#xff0c;Iptables防火墙不仅提供了强大的数据包过滤能力&#xff0c;而且还提供转发&#xff0c;NAT映射等功能&#xff0c;是个人及企业级Linux用户构建网络安全平台的首选工具。但是&#xff0c;由于种种原因&#x…

【fluent】axial、radial、tangentia的含义和区别,axial/radial/tangentia coordination表达的意义

Reference 本文主要参考fluent的官方文档。 ANSYS FLUENT 12.0 User’s Guide - 31.2 Velocity Reporting Options 笛卡尔坐标系——Cartesian coordinate system 不管什么坐标系&#xff0c;都要讲究维数。这个维数根据问题难度确定&#xff0c;对于3D问题需要用三维坐…

大模型商业的搅局者?除了谷歌和微软,你可能忘记了它!

夕小瑶科技说 原创 作者 | 小戏、iven 大模型的商业大戏愈发精彩了&#xff0c;这边是谷歌和 OpenAI 剑拔弩张军备竞赛&#xff0c;那边是各路豪强的大模型应用雪花般的涌来&#xff0c;你方唱罢我登场。 而在这串作为大模型先行者而出现的公司以及研究院的名字中&#xff0c;…