`
等牛奶的咖啡
  • 浏览: 7459 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JDK8 Optional

    博客分类:
  • JAVA
 
阅读更多

1. Optional

Optional 是 Java8 新引入的类这是一个可以为 null 的容器对象,作为新特性,配合使用函数式风格编程!其主要作用是解决对象空指针的问题!

 

2. Optional 用法

2.1 创建一个 Optional

 

Optional<String> name1 = Optional.empty();
Optional<String> name2 = Optional.of("coffee");
Optional<String> name3 = Optional.ofNullable(null);
 

empty 创建一个空的 Optional 对象

of 创建一个 Optional 对象,传入的参数不能为 null,否则 NullPointerException

ofNullable 创建一个 Optional 对象,传入的参数可以为 null

 

2.2 isPresent、ifPresent 

isPresent 判断容器内对象是否为 null,范围一个 boolean

ifPresnet 如果容器内对象不为 null,执行参数中的接口段或lambda表达式

 

Optional<String> name = Optional.of("coffee");

if(name.isPresent())
        System.out.println(name.get());

name.ifPresent(x -> System.out.println(x));

 

2.3 get、orElse、orElseGet、orElseThrow

这四个方法都是用来返回容器中的值,只是在容器中值为 null 的时候,有不同的处理逻辑

get 如果为 null,NullPointerException

orElse 如果为 null,返回传入参数作为默认值

orElseGet 如果为 null,用传入参数 Supplier 接口的实现来生成默认值

 

orElseThrow 如果为 null,返回特定的异常对象

 

Optional<String> name = Optional.ofNullable(null);

System.out.println(name.get());
System.out.println(name.orElse("coffee_orElse"));
System.out.println(name.orElseGet(() -> "coffee_orElseGet"));
System.out.println(name.orElseThrow(RuntimeException::new));

 

2.4 filter、map、flatMap

map 方法用来对 Optional 实例的值执行一系列操作,通过 lambad 表达式定义操作

flatMap 和 map 非常类似,不同的是返回类型必须是 Optional,map 会在内部实现包装 Optional

filter 对 Optional 实例的值进行过滤

 

Optional<String> name = Optional.ofNullable("coffee");

System.out.println(name.map(x -> x.toUpperCase()).orElse("No value found"));
System.out.println(name.flatMap(x -> Optional.ofNullable(x.toUpperCase())).orElse("No value found"));
System.out.println(name.filter(x -> x.equals("kafei")).orElse("No value found"));

 

 

 

分享到:
评论

相关推荐

    JDK1.8 Optional 笔记.pdf

    在Java 8版本中,引入了Optional类,以帮助开发者更简洁和安全地处理可能为空的值。 Optional类位于java.util包中,它不是基本类型,而是一个容器对象,可以包含也可以不包含非空值。这使得在访问值之前,无需进行...

    jdk8帮助文档(jdk8_API)

    JDK 8的Optional类也是一个重要的设计模式,它帮助解决null引用的问题,鼓励更清晰的代码结构。Optional对象表示可能为null的值,通过`isPresent()`、`get()`、`orElse()`等方法,可以避免空指针异常,使代码更具...

    jdk8官方文档

    6. **Optional类**:为了解决空指针异常问题,JDK 8引入了`Optional&lt;T&gt;`类,表示可能为null的值,鼓励开发者显式处理缺失值。 7. **新的集合工厂方法**:集合接口(如`List`, `Set`, `Map`)增加了静态工厂方法,如...

    jdk 8 免费下载 / jdk8.zip

    JDK 8是Oracle公司发布的Java平台标准版的一个重要版本,首次发布于2014年3月。这个版本引入了许多新特性,极大地提升了开发效率和代码质量。本篇文章将详细介绍JDK 8的关键特性和使用方法。 1. **Lambda表达式**...

    jdk8压缩包.zip

    在这个名为"jdk8.zip"的压缩包中,包含了一个重要的文件"jdk8.exe",这通常是Windows操作系统下的JDK安装程序。 1. **模块系统**:JDK 8引入了JSR 294的模块系统(Java Platform Module System,JPMS),它通过模块...

    jdk8免安装版

    在这个“jdk8免安装版”中,我们拥有的是已经解压并可以直接使用的JDK8版本,无需进行常规的安装过程。 首先,让我们了解一下JDK8的主要特性: 1. **lambda表达式**:这是JDK8最显著的改变之一,它简化了处理函数...

    jdk-8u181最新可商用jdk8 JAVA8 JDK1.8下载

    **Java Development Kit (JDK) 8 是Java编程语言的核心组件,它包含了开发和运行Java应用程序所需的工具和库。此版本是JDK的第181次更新,即JDK 1.8 Update 181(也称为JDK 8u181),它是一个重要的维护版本,提供了...

    JDK8 中文帮助文档(jdk api 1.8 google.CHM)

    **JDK8中文帮助文档详解** JDK8(Java Development Kit 8)是Java编程语言的一个重要版本,它带来了许多重大的更新和改进,极大地增强了开发者的工作效率和代码质量。这个文档集合,尤其是"jdk api 1.8_google.CHM...

    jdk8、jkd8中文手册

    在这个压缩包中,包含两个主要文件:`jdk-8u391-windows-x64.exe`是JDK8的Windows 64位安装程序,`jdk api 1.8_google.CHM`则是JDK8的API中文文档。 首先,让我们详细探讨一下JDK8的安装过程。`jdk-8u391-windows-x...

    jdk8中文说明文档_CHM.zip jdk1.8文档 jdk1.8说明文档

    Java Development Kit (JDK) 1.8,通常被称为JDK 8,是Java编程语言的一个重要版本,由Oracle公司发布。这个版本引入了许多新特性、优化和改进,旨在提高开发人员的效率和代码的可维护性。 JDK 8中文说明文档提供了...

    JDK8U202.zip

    JDK8U202是Oracle公司发布的一个重要更新版本,尤其值得注意的是,这是JDK 8的最后一个免费提供商业支持的版本。此版本包含了针对Windows和Linux操作系统的64位版本,对于那些依赖Java 8的企业和开发者来说,这是一...

    jdk8中文手册

    **Java Development Kit (JDK) 8 中文手册** JDK 8是Oracle公司发布的Java编程语言和Java平台标准版(Java SE)的第8个主要版本。这个版本引入了许多新特性和改进,旨在提高开发者的生产力和代码的运行效率。JDK 8...

    jdk8.zip jdk8.zip

    在JDK 8中,我们还看到了Optional类的引入,这是一个可以为null的容器对象。Optional有助于防止空指针异常,鼓励开发者明确地处理可能的null值,从而提高代码的健壮性。 在提供的压缩文件中,"jdk-8u241-windows-x...

    JDK8 API 中文 文档.CHM

    4. **Optional类**:为了解决空指针异常问题,JDK8引入了`Optional`类,它是一个可以为null的容器对象。通过使用`Optional`,可以更清晰地表达代码的意图,避免出现空指针异常。 5. **日期和时间API**:在`java....

    jdk8安装包下载地址.zip

    JDK8是Oracle公司发布的一个重要版本,它在2014年3月发布了第一个正式版,至今仍被广泛使用。JDK8引入了许多新特性,提升了开发效率和代码质量,对于Java开发者来说是必备的工具。 一、JDK8的主要新特性: 1. ...

    jdk8中文API文档

    Java Development Kit (JDK) 8 是Java编程语言的一个重要版本,它引入了许多新特性、增强功能和优化,使得开发人员能够编写更加高效、简洁的代码。中文API文档是为了解决非英语环境下的开发者阅读障碍,提供方便的...

    jdk8_api文档

    《Java Development Kit 8 (JDK 8) API 文档详解》 JDK 8是Java编程语言的一个重要版本,其API(Application Programming Interface)文档是开发者不可或缺的参考资料。这个文档详细介绍了JDK 8中包含的所有类、...

    jdk8安装包: jdk-8u202-windows-x64

    这里的"jdk-8u202-windows-x64"是一个针对Windows 64位操作系统的JDK 8更新202版本的安装包。在本文中,我们将深入探讨JDK 8的重要特性和安装过程。 首先,JDK 8是Oracle公司发布的Java平台标准版(Java SE)的一个...

    java jdk8u151

    1. **JDK 8的基础**: JDK 8是Java历史上的一个里程碑,它引入了诸如Lambda表达式、方法引用、流API(Stream API)、日期和时间API、新的Optional类等重大改进。这些特性极大地提高了代码的简洁性和可读性,同时也...

    JDK8(Linux版本).zip

    6. **Optional类**:为了解决null值带来的问题,JDK8引入了`Optional&lt;T&gt;`类,它表示一个值存在或不存在,鼓励开发者避免使用null值。 7. **类型注解**:JDK8增强了注解的使用,允许在类型参数、类型通配符、类型...

Global site tag (gtag.js) - Google Analytics