Optional类的方法

1、empty

private static void createNullOptional() {
// 创建一个空的Optional实例
// 方式一
Optional<Object> empty = Optional.empty();
System.out.println("empty = " + empty);
// 方式二
Optional<Object> empty2 = Optional.ofNullable(null);
System.out.println("empty2 = " + empty2);
}

2、of

 private static void of() {
Optional<String> qiuqiu = Optional.of("qiuqiu");
System.out.println("qiuqiu = " + qiuqiu); // 传入null将会报错
Optional<Object> optional = Optional.of(null);
System.out.println("optional = " + optional);
}

3、ofNullable

Optional<Object> empty2 = Optional.ofNullable(null);
System.out.println("empty2 = " + empty2);

4、filter

 private static void filter() {
// Optional<String> optional = Optional.of("hello");
Optional<String> optional = Optional.empty();
Optional<String> result = optional.filter(item -> {
if (item.contains("o")) {
return true;
}
return false;
});
// System.out.println("result = " + result.get());
System.out.println("result = " + result);
}

5、map

private static void map() {
User user = new User("qiuqiu", 22);
Optional<User> qiuqiu = Optional.of(user);
Optional<User> optional = qiuqiu.map(item -> {
String name = item.getName();
item.setName(name.toUpperCase());
return item;
});
System.out.println("optional.get() = " + optional.get());
}

6、get

private static void get() {
Optional<Integer> optional = Optional.of(520);
Integer integer = optional.get();
System.out.println("integer = " + integer);
Optional<Object> empty = Optional.empty();
// 报错 java.util.NoSuchElementException
System.out.println("empty.get() = " + empty.get());
}

7、orElse

 private static void orElse() {
Optional<Integer> optional = Optional.of(520);
Integer result = optional.orElse(1314);
System.out.println("result = " + result);
// 为空则返回默认值
Optional<Object> empty = Optional.empty();
Object orElse = empty.orElse(1314);
System.out.println("orElse = " + orElse);
}

8、orElseGet

private static void orElseGet() {
Optional<Integer> optional = Optional.of(520);
Integer result = optional.orElseGet(() -> 1214);
System.out.println("result = " + result);
// 为空则返回默认值 Supplier get()
Optional<Object> empty = Optional.empty();
Object orElseGet = empty.orElseGet(() -> 1235);
System.out.println("orElseGet = " + orElseGet);
}

9、orElseThrow

private static void orElseThrow() {
// orElseThrow() 无参
/* Optional<Integer> optional = Optional.of(520);
Integer integer = optional.orElseThrow();
System.out.println("integer = " + integer); Optional<Object> empty = Optional.empty();
Object orElseThrow = empty.orElseThrow();
System.out.println("orElseThrow = " + orElseThrow);*/ // orElseThrow() 有参
Optional<Integer> optional2 = Optional.of(520);
Integer integer2 = optional2.orElseThrow(() -> {
throw new RuntimeException("出错啦!!!");
});
System.out.println("integer2 = " + integer2); Optional<Object> empty2 = Optional.empty();
Object orElseThrow2 = empty2.orElseThrow(() -> {
throw new RuntimeException("出错啦!!!");
});
System.out.println("orElseThrow2 = " + orElseThrow2);
}

10、ifPersent

private static void ifPersent() {
Optional<Integer> optional = Optional.of(520);
// 值存在就执行Consumer
optional.ifPresent(item -> {
System.out.println("item = " + item);
});
// 值不存在就什么都不做
Optional<Object> empty = Optional.empty();
empty.ifPresent(item -> {
System.out.println("什么都不做!!!");
});
}

11、isPersent

 public static void main(String[] args) {
Optional<Integer> optional = Optional.of(520);
// 值存在就返回true
boolean isPresent = optional.isPresent();
System.out.println("isPresent = " + isPresent);
// 值不存在就返回false
Optional<Object> empty = Optional.empty();
System.out.println("empty.isPresent() = " + empty.isPresent());
}

Java8新特性Optional的更多相关文章

  1. Java8 新特性 Optional 类

    Optional 类的简介   Optional类的是来自谷歌Guava的启发,然后就加入到Java8新特性中去了.Optional类主要就是为子决解价值亿万的错误,空指针异常.   Optional ...

  2. JAVA8新特性Optional,非空判断

    Optional java 的 NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过 "防止 NPE,是程序员的基本修养." 但是修养归 ...

  3. Java8新特性——Optional

    前言 在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现.Java8引入了Optional类,为的就是优雅地处理判空等问题.现在也有很多类库在使用Optional封装返回值,比如Sprin ...

  4. Java8新特性--Optional

    Java 8引入了一个新的Optional类.Optional类的Javadoc描述如下: 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会 ...

  5. java8 新特性 -Optional的常见用法

    1. Optional 一. 简介 Opitonal是java8引入的一个新类,目的是为了解决空指针异常问题.本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为 ...

  6. Java8新特性Optional、接口中的默认方法与静态方法

    Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...

  7. java8 新特性 Optional容器类

    public class Godness { private String name; public Godness() { } public Godness(String name) { this. ...

  8. Java8新特性——Optional类的使用(有效的避免空指针异常)

    OPtional类的使用 概述 到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因.以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guav ...

  9. Java8新特性 - Optional容器类

    Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用null 表示一个值不存在,现在Optional 可以更好的表达这个概念.并且可以避免空指针异 ...

  10. 【Java8新特性】- Optional应用

    Java8新特性 - Optional应用 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! ...

随机推荐

  1. 《SQL与数据库基础》08. 多表查询

    目录 多表查询 多表关系 一对多 多对多 一对一 多表查询概述 分类 内连接 外连接 自连接 联合查询 子查询 分类 标量子查询 列子查询 行子查询 表子查询 案例 本文以 MySQL 为例 多表查询 ...

  2. 从 DMAIC 方法论说起,记一个长链接 bug 的排查全过程

    引 本文是我在前端团队的第四次分享,在过去我曾做过一次关于 bug 排查的全流程的排查分析,文档:客户线上反馈:从信息搜集到疑难 bug 排查全流程经验分享,但这个文章更侧重我过去几年的排查经验,而非 ...

  3. 要调用API接口获取商品数据,首先需要了解该API的文档和规范

    ​ 要调用API接口获取商品数据,首先需要了解该API的文档和规范.大多数API都需要使用API密钥进行身份验证,因此您需要先注册API提供商,并从他们那里获取API密钥.以下是一些通用的步骤: 1. ...

  4. HOMER7配置告警

    概述 HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具. HOMER是一款强大的.运营商级.可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应 ...

  5. webgl centroid质心插值的一点理解

    质心插值说的是什么 2023.10.04再次review这个细节点: https://www.opengl.org/pipeline/article/vol003_6/ https://github. ...

  6. 分布式事务:XA和Seata的XA模式

    上一篇内容<从2PC和容错共识算法讨论zookeeper中的Create请求>介绍了保证分布式事务提交的两阶段提交协议,而XA是针对两阶段提交提出的接口实现标准,本文则对XA进行介绍. 1 ...

  7. 单元测验3:亲密关系mooc

    单元测验3:亲密关系 查看帮助 返回   1 单选(2分) 在亲密关系中,有关权力的表述,以下说法不太准确的的是? A. 对关系付出越多,权力越大. B. 大部分人会倾向认为,在恋爱关系中,男女应该拥 ...

  8. 使用Github Copilot完成代码编写

    上篇文章,我们使用VSCode创建了T.Global解决方案和两个类库工程,接下来我们使用Github Copilot完成代码编写 先说以下业务需求: 提供一个公共的本地化组件,支持对数字.货币.时间 ...

  9. JS逆向实战25——某壳找房模拟登录+百度喵星人指纹加密破解.

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标 目标网站 aHR0c ...

  10. P2951 [USACO09OPEN] Hide and Seek S 题解

    Problem 题目概述 给你一个无向图,边权都为 \(1\) ,求:离 \(1\) 号点最远的点的编号.最远的距离.有几个点是离 \(1\) 号点最远的. 思路 直接用:优先队列 \(BFS\),先 ...