Optional参数类使用

news2024/11/16 6:47:19

 目录

介绍

使用

常用方法

是否为空

对象比较

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.coloradmin.cn/o/487309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux系统TP-ti,tsc2046外设调试

一、整体调试思路 tp外设属于比较常见且比较简单的外设&#xff0c;今天以ti,tsc2046这款为例简述下tp外设的调试。 整体思路 1、配置设备树----驱动调试的device部分 2、tp驱动编译及匹配—driver部分 3、驱动整体调试 二、配置设备树 对于ti,tsc2046我们可以参考内核Docum…

复杂美科技多项区块链技术产品被纳入《2021-2022区块链产业图谱》区块链蓝皮书

2022年9月3日&#xff0c;由中国社会科学院社会科学文献出版社、北京金融科技产业联盟指导&#xff0c;北京区块链技术应用协会&#xff08;BBAA&#xff09;主办的 “Web 3.0发展趋势高峰论坛暨2022元宇宙、区块链、金融科技蓝皮书发布会” 在服贸会上成功举办。 大会隆重发布…

身份鉴别解读与技术实现分析(1)

6.1.4.1 身份鉴别 本项要求包括: a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施 在等级保护体系中,级别越高…

数字时代下网络安全的重要性

在数字时代&#xff0c;网络安全比以往任何时候都更加重要。 随着我们越来越依赖技术来存储和传输敏感信息&#xff0c;网络攻击的风险也在增加。网络攻击可能来自世界任何地方&#xff0c;对个人和企业都可能是毁灭性的。 AkamaiTechnologies首席安全官BoazGelbord在最近的一…

【YOLO系列】YOLOv7论文超详细解读(翻译 +学习笔记)

前言 终于读到传说中的YOLOv7了~≖‿≖✧ 这篇是在美团的v6出来不到一个月就高调登场&#xff0c;作者还是我们熟悉的AB大神&#xff08;对&#xff0c;就是v4那个&#xff09;&#xff0c;读起来又是“熟悉”的感觉&#xff08;贯穿了我的整个五一假期&#xff08;╯&#x…

Vue组件设计-多列表拖拽交换排序

在前端开发中&#xff0c;拖拽排序是一种提升用户体验非常好的方式&#xff0c;常见的场景有单列表拖拽排序&#xff0c;多列表拖拽交换排序&#xff0c;比如以下这种效果&#xff1a; 下面将以这种效果为例&#xff0c;设计一个组件。 1. 安装所需依赖 npm install vuedragg…

多模态的过渡态——latent modal

背景&#xff1a; 随着大模型的推进&#xff0c;单模态的大模型已经无法很好的满足现实工作的需要。很多科研团队和机构开始多模态的研究&#xff0c;多模态的几种机构在前面的文章已经介绍过&#xff0c;这部分不做过多介绍。最理想的多模态应该就是没有模态&#xff0c;单一…

持续集成/持续交付——JenkinsFile详细使用教程

JenkinsFile详细使用教程 一、BlueOcean1、BlueOcean 概念2、BlueOcean 特性3、BlueOcean 安装 二、Pipeline 简介1、Jenkins Pipeline 概念2、Jenkinsfile 语法类型&#xff1a;3、采用Jenkins 任务页面输入a. Jenkins中创建一个 pipeline 任务b. Definition 中选择 Pipeline …

电脑提示msvcp140.dll丢失的解决方法,msvcp140.dll丢失修复教程

msvcp140.dll是Microsoft Visual C Redistributable所需的一个动态链接库文件&#xff0c;它包含了Visual C运行库中的一些函数和类库。这个文件通常出现在Windows操作系统中&#xff0c;用于支持使用Visual C编写的程序的正常运行。如果系统缺少或损坏了这个文件&#xff0c;可…

计算机组成原理 4.2.1存储芯片连接

连接原理 主存储器 通过数据总线、地址总线和控制总线和CPU相连数据总线的位数正比于数据传输率地址总线的位数决定可寻址的最大地址空间控制总线(读/写)指出总线周期的类型和本次输入/输出完成的时刻 但是实际中存储芯片往往很小难以满足地址和数据的位数需求&#xff0c;此…

如何在云服务器上搭建ChatGLM

摘录&#xff1a;ChatGPT重新点燃了AI&#xff0c;然后OpenAI却没有向我们开放ChatGPT&#xff0c;虽然有些人通过了一下手段注册了账号&#xff0c;但是不久就被OpenAI拉入了黑名单。3月份我国的百度也推出了和ChatGPT对标的文言一心&#xff0c;随后阿里也推出了自己的文本对…

李雨浛:在数据、网络与民意之间——用计算社会科学方法探讨数字媒体与可持续未来 | 提升之路系列(八)...

导读 为了发挥清华大学多学科优势&#xff0c;搭建跨学科交叉融合平台&#xff0c;创新跨学科交叉培养模式&#xff0c;培养具有大数据思维和应用创新的“π”型人才&#xff0c;由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

创建并使用shell脚本

1&#xff0c;查询 bash解释器 所在位置 创建前&#xff0c;我们需要先知道 bash 解释器所在的位置&#xff0c;以方便在头部写声明。一般位置是在 /bin/bash 但是有的是在 /usr/bin/bash &#xff0c;所以需要查找一下。 文件位置查找命令&#xff1a;whereis xxx rootarmb…

Probabilistic and Geometric Depth: Detecting Objects in Perspective 论文学习

论文地址&#xff1a;Probabilistic and Geometric Depth: Detecting Objects in Perspective Github 地址&#xff1a;Probabilistic and Geometric Depth: Detecting Objects in Perspective 1. 解决了什么问题&#xff1f; 3D 目标检测在许多应用中发挥着重要作用&#xf…

分析的四个维度

我们都听过这句格言“数据是新石油”——一种宝贵、丰富的资源&#xff0c;只有提炼后才有用。然而&#xff0c;最引人注目但又令人望而生畏的比较之一是将船只送入海洋进行石油勘探。有些会失败&#xff0c;有些会有重大发现。 深海勘探和钻探取决于精确测绘和对海底的清晰认…

【计算机网络】图解内容分发网络 CDN

【计算机网络】图解内容分发网络 CDN 参考资料&#xff1a; 用了CDN就一定比不用更快吗&#xff1f; 什么是内容分发网络 高性能利器&#xff1a;CDN我建议你好好学一下&#xff01; 文章目录 【计算机网络】图解内容分发网络 CDN一、CDN 概述1.1、什么是 CDN1.2、为什么需要 …

数字化转型导师坚鹏:数字化转型背景下的企业人力资源管理

企业数字化转型背景下的企业人力资源管理 课程背景&#xff1a; 很多企业存在以下问题&#xff1a; 不清楚企业数字化转型目前的发展阶段与重要应用&#xff1f; 不知道企业数字化转型给企业人力资源管理带来哪些机遇与挑战&#xff1f; 不知道企业数字化转型背景下如何…

SpringBoot 项目如何实现动态配置多数据源?

简介&#xff1a; dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。 其支持 Jdk 1.7, SpringBoot 1.4.x 1.5.x 2.x.x。 特性&#xff1a; 支持 数据源分组 &#xff0c;适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持…

认识JavaBean

什么是JavaBean? JavaBean是指符合特定规范以及定义的Java类&#xff0c;通常用于封装数据&#xff0c;提供访问数据的方法和属性&#xff0c;并且可以被其他程序重用。它具有以下特点&#xff1a; 遵循特定编程规范&#xff1a;JavaBean必须要遵循JavaBean编程规范&#xff…

分层领域模型相关总结(DO/PO/VO/BO/DTO/Query等概念)

分层领域模型(DO/PO/VO/BO/DTO/Query等概念) 1. 为什么会有这么多O的概念&#xff1f; 各种分层概念的提出都是为了解耦&#xff0c;增加逻辑/代码的复用&#xff0c;便于后期维护/开发&#xff0c;提高团队开发效率&#xff1b;but&#xff0c;过多的细分也会使得开发过程相对…