当前位置:首页 > 后端 > java > 正文内容

Java8新特性-Optional类

Optional 类(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

1.of方法

创建一个 Optional 实例

@Testpublic void test1(){
	Optional<Employee> op = Optional.of(new Employee());	Employee emp = op.get();
	System.out.println(emp);
}

2.ofNullable & empty

若 t 不为 null,创建 Optional 实例,否则创建空实例

@Testpublic void test2(){
    Optional<Employee> op = Optional.ofNullable(null);    if(op.isPresent()){
        System.out.println(op.get());
    }
    
    System.out.println(op.get());

    Optional<Employee> op = Optional.empty();
    System.out.println(op.get());
}

3.orElse & orElseGet

  • orElse(T t) : 如果调用对象包含值,返回该值,否则返回t

  • orElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回 s 获取的值

@Testpublic void test3(){
    Optional<Employee> op = Optional.ofNullable(new Employee());    if(op.isPresent()){
        System.out.println(op.get());
    }    Employee emp = op.orElse(new Employee("张三"));
    System.out.println(emp);    Employee emp2 = op.orElseGet(() -> new Employee());
    System.out.println(emp2);
}

4.map & flatMap

  • map(Function f): 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()

  • flatMap(Function mapper):与 map 类似,要求返回值必须是Optional

@Testpublic void test4(){
    Optional<Employee> op = Optional.of(new Employee(101, "张三", 18, 9999.99));

    Optional<string> op2 = op.map(Employee::getName);
    System.out.println(op2.get());

    Optional<String> op3 = op.flatMap((e) -> Optional.of(e.getName()));
    System.out.println(op3.get());
}


扫描二维码推送至手机访问。

版权声明:本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:luxd@aliyun.com,感谢支持理解。


本文链接:https://luxd.cc/post/211.html

“Java8新特性-Optional类” 的相关文章

为IntelliJ IDEA安装插件

为IntelliJ IDEA安装插件

1. 安装插件插件是开发工具的扩展程序,通常由第三方提供,当安装了插件后,原开发工作的菜单、按钮等开发环境可能会发生变化,例如出现了新的菜单项,或出现了新的按钮,甚至一些全新的编码方式,通常,使用插件可以使得开发某些代码或实现某些功能时更加简便。绝大部分的插件的安装方式都是相同的,另有一部分插件在安...

使用IntelliJ IDEA开发Maven HelloWorld

使用IntelliJ IDEA开发Maven HelloWorld

1. 创建Maven项目在IntelliJ IDEA的启动欢迎界面中点击Create New Project:在New Project对话框的左侧选中Maven,在右侧确认JDK版本无误后,即可点击Next到下一步:先确定项目的名称,检查项目的保存位置,并展开Artifact Coordinates...

使用IntelliJ IDEA开发Java Web HelloWorld

使用IntelliJ IDEA开发Java Web HelloWorld

1. 下载Tomcat首先,下载Apache Tomcat并解压到本地计算机,可存放于任何位置。另外,需要在系统中环境JRE_HOME环境变量,以保证Tomcat可以正常启动,具体配置方式请参考其它教程。2. 创建Java Web项目在IntelliJ IDEA的欢迎主界面中,点击Create Ne...

使用IntelliJ IDEA开发Java HelloWorld

使用IntelliJ IDEA开发Java HelloWorld

1. 创建项目在IntelliJ IDEA的欢迎主界面中,点击Create New Project即可创建新的项目:2. 设置项目类型默认情况下的项目类型是Java,本次的案例目标是HelloWorld,则该选项保持不变即可。右侧可以选择JDK的版本,如果默认已经选中了1.8版,则不需要修改,直接点...

XStream 用法详解 XML 转换为 java 实体类

XStream 用法详解 XML 转换为 java 实体类

内容图文XStream 用法详解 java 类与 XML 互换现在 WEB数据交换的时代,传送XML目前是一个比较流行的方式,具有统一的规则约束,为实现后台接口提供了一个很方便的实现。我编写了一个 接收XML并转换成所需要的Object类的 小例子,希望能够对做互联网数据传输、接口调用的朋友有所帮助...

Java实验报告(实验三)

Java实验报告(实验三)

内容图文 一、实验内容1. XP基础2. XP核心实践3. 相关工具4.结对同学:20159205 石宇婷Blog网址:http://home.cnblogs.com/u/20159205syt/ 二、实验步骤(一)敏捷开发与XP(1)含义:是一种以人为核心、迭代、循序渐进的开发...