java Optional类

Java 8 引入的 Optional 类,主要解决的问题是空指针异常(NullPointerException)

返回值/修饰符方法详细
static Optionalempty()
返回一个空的 Optional实例。
Optional<String> stringOptional = Optional.empty();
booleanequals(Object obj)
判断对象是否相等
Optional<UserInfo> stringOptional1 = Optional.of(user);
Optional<UserInfo> stringOptional2 = Optional.of(user);
boolean equals = stringOptional1.equals(stringOptional2);
Optionalfilter(Predicate<? super T> predicate)
根据条件筛选
UserDto user=new UserDto();
user.setKeyword(“asd”);
Optional<UserDto> optionalUserDto = Optional.of(user).filter(u->u.getKeyword().equals(“asd”));
符合条件的话,就把值赋给optionalUserDto
OptionalflatMap(Function<? super T,Optional> mapper)
如果一个值存在,应用提供的 Optional映射函数给它,返回该结果,否则返回一个空的 Optional 。
Optional<String> stringOptional = Optional.of(user).flatMap(u -> Optional.ofNullable(u.getKeyword()));
如果u.getKyword不为空,返回一个Optional对象
Tget()
如果 Optional中有一个值,返回值,否则抛出 NoSuchElementException 。
获取Optional包含的对象,String str = stringOptional.get();
inthashCode()
返回当前值的哈希码值(如果有的话),如果没有值,则返回0(零)。
voidifPresent(Consumer<? super T> consumer)
如果存在值,则使用该值调用指定的消费者,否则不执行任何操作。
Optional<String> optionalValue = Optional.of(“Hello”);
optionalValue.ifPresent(value -> {
System.out.println("Value is present: " + value);
// 在这里可以对 value 进行处理
});
Optional<String> emptyOptional = Optional.empty();
emptyOptional.ifPresent(value -> {
// 这段代码不会执行,因为 emptyOptional 中没有值
System.out.println("Value is present: " + value);
});
booleanisPresent()
返回 true如果存在值,否则为 false 。
Optional<String> optionalValue = Optional.of(“Hello”);
//如果值存在
if(optionalValue.isPresent()) {
}
Optionalmap(Function<? super T,? extends U> mapper)
如果存在一个值,则应用提供的映射函数,如果结果不为空,则返回一个 Optional结果的 Optional 。
Optional<String> optionalValue = Optional.of(“Hello”);
String abc = optionalValue.map(u -> u).orElse(“abc”); 直接返回optionalValue,如果空返回"abc"
static Optionalof(T value)
返回具有 Optional的当前非空值的Optional。
Optional<String> abc = Optional.of(“abc”); 返回一个字符串类型的Optional对象,如果为null报错NullPointerException
static OptionalofNullable(T value)
返回一个 Optional指定值的Optional,如果为空,则返回一个空的 Optional 。
Optional<String> abc = Optional.ofNullable(“abc”); 返回一个字符串类型的Optional对象,可以为null
TorElse(T other)
返回值如果存在,否则返回 other 。
String msg=null;
String str=Optional.ofNullable(msg).orElse(“abc”);
如果msg不为null,直接返回msg,否则返回"abc"
TorElseGet(Supplier<? extends T> other)
返回值(如果存在),否则调用 other并返回该调用的结果。
String msg=null;
String str=Optional.ofNullable(msg).orElseGet(()->“asd”);
有值的时候返回值,如果没有值,它会执行作为参数传入的 Supplier(供应者) 函数式接口,并将返回其执行结果:

T
orElseThrow(Supplier<? extends X> exceptionSupplier)
返回包含的值(如果存在),否则抛出由提供的供应商创建的异常。
String str=Optional.ofNullable(msg).orElseThrow(()->new RuntimeException(“null”));
对象为null时抛出一个异常
StringtoString()
返回此可选的非空字符串表示,适用于调试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/214006.shtml

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

相关文章

IO流的使用(四)

对象序列化机制 概念&#xff1a;允许把内存中的Java对象转换成与平台无关的二进制流&#xff0c;从而允许把这种二进制流持久地保存在磁盘上&#xff0c;或通过网络将这种二进制流传输到另一个网络节点&#xff1b;当其它程序取了这种二进制流&#xff0c;就可恢复成原来的Ja…

C# OpenCvSharp DNN 部署YOLOV6目标检测

目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN 部署YOLOV6目标检测 效果 模型信息 Inputs ------------------------- name&#xff1a;image_arrays tensor&#xff1a;Float[1, 3, 640, 640] -------------------------------------------------------------…

一个不上进的爱好,让我走进了计算机世界

为什么当初选择计算机行业 当初选择计算机专业&#xff0c;真的就是觉得学习计算机专业&#xff0c;就可以经常接触计算机&#xff0c;可以有很多的机会可以玩游戏。 后来高考的时候&#xff0c;考试成绩也不理想&#xff0c;分数就不好意思说了。但是喜从天降&#xff0c;居…

Windows Terminal的半透明效果

打开Windows Terminal的半透明效果 最终实现效果&#xff1a; 系统&#xff1a;win11 23H2 步骤&#xff1a; 1.winx打开终端 2.右键打开设置 3.打开外观->亚克力材料开启 4.默认值->外观->透明度&#xff0c;按喜好选择即可

Linux+Moba+虚拟机

软件&#xff1a; VMware Workstation ProMobaXterm 简介 是一款由VMware公司开发的强大的虚拟机软件。它可以在单台物理计算机上创建、运行和管理多个虚拟机&#xff0c;每个虚拟机都可以独立运行不同的操作系统和应用程序。 功能&#xff1a; 虚拟化&#xff1a;能…

PPP协议概述与实验示例

PPP协议概述与实验示例 概述 PPP&#xff08;Point-to-Point Protocol&#xff09;是一种用于在点对点连接上传输多协议数据包的标准方法。它已经成为最广泛使用的互联网接入数据链路层协议&#xff0c;可以与各种技术结合&#xff0c;如ADSL、LAN等&#xff0c;实现宽带接入…

如何通过内网穿透工具实现任意浏览器远程访问Linux本地zabbix web管理界面

前言 Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。 本地zabbix web管理界面限制在只能局域…

MyBatis-Plus - 论 1 个实体类被 N 个DAO 类绑定,导致 MP 特性(逻辑删)失效的解决方案

问题描述 最近遇到一个奇奇怪怪的问题&#xff0c;发现 Mybatis-Plus『逻辑删』特性失效&#xff0c;而且是偶现&#xff0c;有时候可以&#xff0c;有时候又不行。于是开启了 Debug Mybatis-Plus 源码之旅 原因分析 我们接下来重点关注 TableInfoHelper 类 /** Copyright (…

算法:两数之和(暴力解法和优化算法)

暴力解法&#xff1a;使用快慢指针解决&#xff0c;时间复杂度 O(n^2)&#xff0c;空间复杂度 O(n) /*** param {number[]} nums* param {number} target* return {number[]}*/ var twoSum function(nums, target) {let slow 0let fast 1// 如果慢指针没有超过nums边界就继…

代理IP怎么使用?Mac苹果系统设置http代理IP教程

代理IP是一种通过将请求转发到另一个服务器&#xff0c;以隐藏自己的真实IP地址的服务器。使用代理IP可以保护您的隐私和安全&#xff0c;防止被跟踪或被攻击。在本文中&#xff0c;我们将介绍如何在Mac苹果系统上设置http代理IP教程。 一、了解代理IP 代理IP地址是一种可以用来…

基于Java二手房交易管理系统

基于Java二手房交易管理系统 功能需求 1、房源信息管理&#xff1a;系统需要能够记录和管理所有房源的详细信息&#xff0c;包括房屋地址、房屋面积、售价、房屋类型等。管理员和房东可以添加、编辑和删除房源信息。 2、买家信息管理&#xff1a;系统需要能够记录和管理所有…

2023.12.9 关于 Spring Boot 事务传播机制详解

目录 事务传播机制 七大事务传播机制 支持当前调用链上的事务 Propagation.REQUIRED Propagation.SUPPORTS Propagation.MANDATORY 不支持当前调用链上的事务 Propagation.REQUIRES_NEW Propagation.NOT_SUPPORTED Propagation.NEVER 嵌套事务 Propagation.NESTED…

蜂窝、无线设备应用 HXG-242+、PVGA-123+、PMA-5452+、PSA-39+、PSA-14+射频放大器(IC器件)

1、HXG-242 射频放大器 IC 无线 LAN&#xff0c;LTE 700MHz 至 2.4GHz&#xff0c;6-SMD 模块 HXG-242&#xff08;符合RoHS规范&#xff09;是一款先进的放大器模块&#xff0c;结合了高动态范围MMIC技术和优化电路&#xff0c;可在聚焦频率范围内提供业界领先的线性度。它采…

创建并测试第一个django项目并解决过程中遇到的问题

Django 是一个高级 Python Web 框架&#xff0c;它鼓励快速开发和简洁、实用的设计。它由经验丰富的开发人员构建&#xff0c;解决了 Web 开发的大部分麻烦&#xff0c;因此您可以专注于编写应用程序&#xff0c;而无需重新发明轮子。它是免费和开源的。 目录 一、django项目 …

Nginx 简单入门操作

前言:之前的文章有些过就不罗嗦了。 Nginx 基础内容 是什么? Nginx 是一个轻量级的 HTTP 服务器,采用事件驱动、异步非阻塞处理方式的服务器,它具有极好的 IO 性能,常用于 HTTP服务器(包含动静分离)、正向代理、反向代理、负载均衡 等等. Nginx 和 Node.js 在很多方…

pdb 调试 python 代码

pdb python的官方调试工具; 默认下载的模块 参考文档 pdbpdb有官方文档, 也有源码, 可能阅读python源码更容易理解; 和gdb非常相似&#xff0c;也支持扩展; 基于bdb,cmd拓展; 代码中设置调试点(一次性调试) 好处是可以源码级别的调试, 对于刚了解pdb又想调试子进程的比较…

大语言模型有什么意义?亚马逊训练自己的大语言模型有什么用?

近年来&#xff0c;大语言模型的崭露头角引起了广泛的关注&#xff0c;成为科技领域的一项重要突破。而在这个领域的巅峰之上&#xff0c;亚马逊云科技一直致力于推动人工智能的发展。那么&#xff0c;作为一家全球科技巨头&#xff0c;亚马逊为何会如此注重大语言模型的研发与…

解读 | GPT-4突然“变赖“ 是莫名其妙还是另有玄机

大家好&#xff0c;我是极智视界&#xff0c;欢迎关注我的公众号&#xff0c;获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」&#xff0c;星球内有超多好玩的项目实战源码和资源下载&#xff0c;链接&#xff1a;https://t.zsxq.com/0aiNxERDq 事情是这样的&#…

初学websocket有感-待研究

https://www.bilibili.com/video/BV1KN411n7WD/ 看到一半的时候就会想到以下的问题&#xff1a; 初学websocket有感-待研究 既然每一个endPoint都是对应着一个服务器和客户端浏览器的连接对象&#xff0c;那么就是说要创建很多个endPoint对象咯。 一、是否回将创建的这么多…

项目经理和产品经理哪个更有发展前景?

如果是单看“钱途”的话&#xff0c;如果是在传统行业&#xff0c;可能差不多&#xff1b;如果是在IT行业的话&#xff0c;可能更需要项目经理&#xff1b;互联网行业的话&#xff0c;可能更需要产品经理。 项目经理跟产品经理两个证都挺受市场欢迎的&#xff0c;两个岗位职责…