Java8新特性——Optional容器类的简单应用
1.Optional容器类
Optional<T> 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。
常用方法 :
- Optional.of(T t) : 创建一个 Optional 实例
- Optional.empty() : 创建一个空的 Optional 实例
- Optional.ofNullable(T t) : 若 t 不为 null,创建 Optional 实例;否则创建空实例
- isPresent() : 判断是否包含值
- orElse(T t) : 如果调用对象包含值,返回该值,否则返回t
- orElseGet(Supplier s) : 如果调用对象包含值,返回该值,否则返回 s 获取的值
- map(Function f) : 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()
- flatMap(Function mapper) : 与 map 类似,要求返回值必须是Optional
2.应用举例
下面的代码案例按照上面所列方法顺序给出。首先需要一个Employee类用作测试。
package com.szh.java8;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/****/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Employee {private Integer id;private String name;private Integer age;private Double salary;}
@Testpublic void test1() {Optional<Employee> op = Optional.of(new Employee());Employee employee = op.get();System.out.println(employee);}
@Testpublic void test2() {Optional<Employee> op = Optional.empty();System.out.println(op.get());}
@Testpublic void test3() {Optional<Employee> op = Optional.ofNullable(new Employee(1001,"张起灵",18,6666.66));System.out.println(op.get());}
@Testpublic void test4() {Optional<Employee> op = Optional.of(new Employee());if (op.isPresent()) {System.out.println(op.get());}}
@Testpublic void test5() {Optional<Employee> op1 = Optional.ofNullable(null);Employee employee1 = op1.orElse(new Employee(1001,"张起灵",18,6666.66));System.out.println(employee1);Optional<Employee> op2 = Optional.ofNullable(new Employee());Employee employee2 = op2.orElse(new Employee(1001,"张起灵",18,6666.66));System.out.println(employee2);}
@Testpublic void test6() {Optional<Employee> op1 = Optional.ofNullable(null);Employee employee1 = op1.orElseGet(() -> new Employee(1001,"张起灵",18,6666.66));System.out.println(employee1);Optional<Employee> op2 = Optional.ofNullable(new Employee());Employee employee2 = op2.orElseGet(() -> new Employee(1001,"张起灵",18,6666.66));System.out.println(employee2);}
@Testpublic void test7() {Optional<Employee> op1 = Optional.of(new Employee(1001,"张起灵",18,6666.66));Optional<String> op2 = op1.map(Employee::getName);System.out.println(op2.get());Optional<String> op3 = op1.flatMap((e) -> Optional.of(e.getName()));System.out.println(op3.get());}
Java8新特性——Optional容器类的简单应用相关推荐
- Java8新特性——Optional 类
文章目录 前言 Optional 类 1.概述 2.API介绍 of ofNullable empty isPresent get ifPresent orElse orElseGet orElseT ...
- Java8新特性-Optional
文章目录 简介 Optional源码分析和使用场景 属性和构造 常用方法 get()方法 isPresent()方法 ifPresent(Consumer<? super T> consu ...
- Java8新特性 Optional类
作为开发人员每天与NullPointerException斗智斗勇.每接收到参数或调用方法获得值得判断一下是否为null.稍不留意,空指针异常就像幽灵一样出现了.这篇文章我们来学习Java8是如何通过 ...
- Java8新特性-Optional,狂神说docker笔记百度云
// 这个是通用的代表NULL值的Optional实例private static final Optional<?> EMPTY = new Optional<>();// ...
- Java8新特性Optional类
这里写自定义目录标题 Java8 Optional 类 前言 创建 Optional 实例 Optional API常用接口的用法 get()方法 isPresent()方法 isPresent()方 ...
- Java8新特性Optional、接口中的默认方法与静态方法
Optional Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念 ...
- Java8新特性——Stream API的简单应用
1.写在前面 关于Stream API的内容,已经基本上说完了.大家可以参考我的这两篇文章: Stream API的创建方式及中间操作.Stream API的终止操作 那么这篇文章主要就是说一个Str ...
- java 8 optional 类,Java8新特性-Optional类
Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念.并且可以避免空指 ...
- JAVA8新特性Optional和Stream和Localdate用法
1.Optional类是Java8为了解决null值判断问题 2.Stream 是Java SE 8类库中新增的关键抽象,Java 8 引入的的Stream主要用于取代部分Collection的操作, ...
最新文章
- Matlab与数据结构 -- 对矩阵的排序
- 全球Top5互联网巨头崛起秘诀,真相竟然是?
- MySQL 复制 主键冲突
- 使用nc检测udp端口是否可以正常通讯
- 做「容量预估」可没有true和false
- Module的加载实现
- java file 堵塞_单元测试最终在Java 6中阻塞
- 超全开放 API 免费调用,这款 API 管理工具太香了!
- atitit.为什么技术的选择方法java超过.net有前途
- 从DB-Engines看传统数据库生存状况
- torch中permute()函数用法补充内容(矩阵维度变化详细过程)
- pp助手苹果版_苹果一键刷机助手app免费版下载-一键刷机精灵下载手机版
- windows 2012安装证书服务器,windows 2012 RADIUS服务器认证问题
- [讨论] 1.虚拟设备驱动程序初步
- 原生JavaScript使用和jQuery使用
- go语言处理html文件,go语言操作文件实例笔记
- 移动通信网络规划:机房设计
- AI-大型软件研发效能倍增的银弹
- 2022-2027年中国微创介入医疗器械市场竞争态势及行业投资前景预测报告
- unity animator动画融合时的上下半身速度分离控制