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容器类的简单应用相关推荐

  1. Java8新特性——Optional 类

    文章目录 前言 Optional 类 1.概述 2.API介绍 of ofNullable empty isPresent get ifPresent orElse orElseGet orElseT ...

  2. Java8新特性-Optional

    文章目录 简介 Optional源码分析和使用场景 属性和构造 常用方法 get()方法 isPresent()方法 ifPresent(Consumer<? super T> consu ...

  3. Java8新特性 Optional类

    作为开发人员每天与NullPointerException斗智斗勇.每接收到参数或调用方法获得值得判断一下是否为null.稍不留意,空指针异常就像幽灵一样出现了.这篇文章我们来学习Java8是如何通过 ...

  4. Java8新特性-Optional,狂神说docker笔记百度云

    // 这个是通用的代表NULL值的Optional实例private static final Optional<?> EMPTY = new Optional<>();// ...

  5. Java8新特性Optional类

    这里写自定义目录标题 Java8 Optional 类 前言 创建 Optional 实例 Optional API常用接口的用法 get()方法 isPresent()方法 isPresent()方 ...

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

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

  7. Java8新特性——Stream API的简单应用

    1.写在前面 关于Stream API的内容,已经基本上说完了.大家可以参考我的这两篇文章: Stream API的创建方式及中间操作.Stream API的终止操作 那么这篇文章主要就是说一个Str ...

  8. java 8 optional 类,Java8新特性-Optional类

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

  9. JAVA8新特性Optional和Stream和Localdate用法

    1.Optional类是Java8为了解决null值判断问题 2.Stream 是Java SE 8类库中新增的关键抽象,Java 8 引入的的Stream主要用于取代部分Collection的操作, ...

最新文章

  1. 上海python好找工作吗_上海找个月薪一万的工作难吗
  2. Equipment download - individual object以及object structure创建细节
  3. pccad自定义图框_(PCCAD自定义标题栏详细方法.doc
  4. NLP简报(Issue#9)
  5. style文件的指定
  6. POJ - 1459 Power Network(最大流)(模板)
  7. 《前端面试之道-JS篇》(上)
  8. js createelement_如何在vue中继续使用layer.js,亲测好用
  9. 自己动手简单实现vbb的URL静态化
  10. instsrv.exe和srvany.exe将.exe文件注册为windows服务
  11. ZOJ 2706 Thermal Death of the Universe (线段树)
  12. ubuntu conda、pip 设置代理
  13. 常见生态问题成因及措施
  14. DM8168 Uboot使用EMAC1(TI源码使用默认的EMAC0)
  15. 程序员 撩妹java6_程序员撩妹终极攻略——快速获取码农把妹密码
  16. 第十四届全国大学生信息安全竞赛-线上赛Writeup
  17. 《逆赛博格教堂与集市》——国内首个基于区块链的人与AI协作艺术展即将开幕...
  18. mysql判断表是否为空_quot;他为什么对我这么好?”:一张测量表判断男生是否喜欢你!...
  19. 计算机分类汇总前必须进行什么操作,分类汇总前必须先进行什么操作
  20. 给别人计算机office作业评语,Office操作题自动评分系统的总体评价

热门文章

  1. Redisson信号量
  2. 制作淘宝主图视频的软件
  3. android的SDK离线安装详细教程
  4. 中秋节快乐--祝诸佬们今后月来月靓
  5. Apollo Planning(三)
  6. 028 二次型标准化 方法一配方法
  7. 计算机科学硕士排名,UCSB计算机科学硕士排名,千万用心的看
  8. ofbiz学习——分类
  9. 鼠标闲置一段时间后自动隐藏
  10. 软件测试如何入门及进阶