Java8新特性Optional
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的更多相关文章
- Java8 新特性 Optional 类
Optional 类的简介 Optional类的是来自谷歌Guava的启发,然后就加入到Java8新特性中去了.Optional类主要就是为子决解价值亿万的错误,空指针异常. Optional ...
- JAVA8新特性Optional,非空判断
Optional java 的 NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨, 有大佬说过 "防止 NPE,是程序员的基本修养." 但是修养归 ...
- Java8新特性——Optional
前言 在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现.Java8引入了Optional类,为的就是优雅地处理判空等问题.现在也有很多类库在使用Optional封装返回值,比如Sprin ...
- Java8新特性--Optional
Java 8引入了一个新的Optional类.Optional类的Javadoc描述如下: 这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会 ...
- java8 新特性 -Optional的常见用法
1. Optional 一. 简介 Opitonal是java8引入的一个新类,目的是为了解决空指针异常问题.本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为 ...
- Java8新特性Optional、接口中的默认方法与静态方法
Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...
- java8 新特性 Optional容器类
public class Godness { private String name; public Godness() { } public Godness(String name) { this. ...
- Java8新特性——Optional类的使用(有效的避免空指针异常)
OPtional类的使用 概述 到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因.以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guav ...
- Java8新特性 - Optional容器类
Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用null 表示一个值不存在,现在Optional 可以更好的表达这个概念.并且可以避免空指针异 ...
- 【Java8新特性】- Optional应用
Java8新特性 - Optional应用 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! ...
随机推荐
- WPF学习 - 闭坑(持续更新)
坑1:自定义控件设计原则: 既然称之为控件,那么就必定有界面与行为两部分. 界面就是展示给用户看的,用于承载类的属性.方法.事件等. 行为就是类的方法,以及这些方法需要用到的属性.字段等. WPF设计 ...
- 利用RATF框架实现web状态的监控
之前,我们已经说明了如何实现一个我们的接口测试框架RATF,当然这个框架不止可以用于管理我们的接口测试代码,我们还可以用他来对我们的web进行简单粗暴的监控. 原理: 1. 通过使用配置文件,对要监控 ...
- 升讯威在线客服系统的并发高性能数据处理技术:PLINQ并行查询技术
我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户.对我来说,只要能获得用户的认可,就是我最大的动力. 最近客服系统成功经受住了客户现场组织的压力测试,获得了客户的认可. 客户组 ...
- Solution -「洛谷 P3267」「JLOI 2016」「SHOI 2016」侦察守卫
Description Link. 给你一棵树,放置守卫在某个点上面需要一定代价和一定的有效范围.让你覆盖若干指定点,求最小代价 Solution 算法标签: $\ \ \ \ \ \ \ \ \ $ ...
- ReactPortals传送门
ReactPortals传送门 React Portals提供了一种将子节点渲染到父组件以外的DOM节点的解决方案,即允许将JSX作为children渲染至DOM的不同部分,最常见用例是子组件需要从视 ...
- Host-Only模式下虚拟机无法联网问题
环境: 镜像:Linux CentOS7 \-----------------------------------------\ 问题描述: 虚拟设置了Host-Only模式的虚拟网卡VMNet4,并 ...
- umich cv-2-1
UMICH CV Linear Classifiers 对于使用线性分类器来进行图片分类,我们可以给出这样的参数化方法: 而对于这样一个式子,我们怎么去理解呢? 首先从代数的角度,这个f(x,W)就是 ...
- 8. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP改造篇之HPACK原理
用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP改造篇之HPACK原理 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy ...
- Chromium Mojo通信
Mojo 是一个跨平台 IPC 框架,它诞生于 chromium ,用来实现 chromium 进程内/进程间的通信.目前,它也被用于 ChromeOS. 在我们代码应用中,如何使用Mojo来作进程间 ...
- APIO 2023 游记
真心话大冒险很有趣. rand 一个房间去敲门加 QQ 很有趣.这么看社恐猫好像也没那么社恐. 面到了 zpl pcq iee dx.单方面认识了很多神仙. 比赛只会写暴力,评测 queue 害人不浅 ...