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"));
相关推荐
在Java 8版本中,引入了Optional类,以帮助开发者更简洁和安全地处理可能为空的值。 Optional类位于java.util包中,它不是基本类型,而是一个容器对象,可以包含也可以不包含非空值。这使得在访问值之前,无需进行...
JDK 8的Optional类也是一个重要的设计模式,它帮助解决null引用的问题,鼓励更清晰的代码结构。Optional对象表示可能为null的值,通过`isPresent()`、`get()`、`orElse()`等方法,可以避免空指针异常,使代码更具...
6. **Optional类**:为了解决空指针异常问题,JDK 8引入了`Optional<T>`类,表示可能为null的值,鼓励开发者显式处理缺失值。 7. **新的集合工厂方法**:集合接口(如`List`, `Set`, `Map`)增加了静态工厂方法,如...
JDK 8是Oracle公司发布的Java平台标准版的一个重要版本,首次发布于2014年3月。这个版本引入了许多新特性,极大地提升了开发效率和代码质量。本篇文章将详细介绍JDK 8的关键特性和使用方法。 1. **Lambda表达式**...
在这个名为"jdk8.zip"的压缩包中,包含了一个重要的文件"jdk8.exe",这通常是Windows操作系统下的JDK安装程序。 1. **模块系统**:JDK 8引入了JSR 294的模块系统(Java Platform Module System,JPMS),它通过模块...
在这个“jdk8免安装版”中,我们拥有的是已经解压并可以直接使用的JDK8版本,无需进行常规的安装过程。 首先,让我们了解一下JDK8的主要特性: 1. **lambda表达式**:这是JDK8最显著的改变之一,它简化了处理函数...
**Java Development Kit (JDK) 8 是Java编程语言的核心组件,它包含了开发和运行Java应用程序所需的工具和库。此版本是JDK的第181次更新,即JDK 1.8 Update 181(也称为JDK 8u181),它是一个重要的维护版本,提供了...
**JDK8中文帮助文档详解** JDK8(Java Development Kit 8)是Java编程语言的一个重要版本,它带来了许多重大的更新和改进,极大地增强了开发者的工作效率和代码质量。这个文档集合,尤其是"jdk api 1.8_google.CHM...
在这个压缩包中,包含两个主要文件:`jdk-8u391-windows-x64.exe`是JDK8的Windows 64位安装程序,`jdk api 1.8_google.CHM`则是JDK8的API中文文档。 首先,让我们详细探讨一下JDK8的安装过程。`jdk-8u391-windows-x...
Java Development Kit (JDK) 1.8,通常被称为JDK 8,是Java编程语言的一个重要版本,由Oracle公司发布。这个版本引入了许多新特性、优化和改进,旨在提高开发人员的效率和代码的可维护性。 JDK 8中文说明文档提供了...
JDK8U202是Oracle公司发布的一个重要更新版本,尤其值得注意的是,这是JDK 8的最后一个免费提供商业支持的版本。此版本包含了针对Windows和Linux操作系统的64位版本,对于那些依赖Java 8的企业和开发者来说,这是一...
**Java Development Kit (JDK) 8 中文手册** JDK 8是Oracle公司发布的Java编程语言和Java平台标准版(Java SE)的第8个主要版本。这个版本引入了许多新特性和改进,旨在提高开发者的生产力和代码的运行效率。JDK 8...
在JDK 8中,我们还看到了Optional类的引入,这是一个可以为null的容器对象。Optional有助于防止空指针异常,鼓励开发者明确地处理可能的null值,从而提高代码的健壮性。 在提供的压缩文件中,"jdk-8u241-windows-x...
4. **Optional类**:为了解决空指针异常问题,JDK8引入了`Optional`类,它是一个可以为null的容器对象。通过使用`Optional`,可以更清晰地表达代码的意图,避免出现空指针异常。 5. **日期和时间API**:在`java....
JDK8是Oracle公司发布的一个重要版本,它在2014年3月发布了第一个正式版,至今仍被广泛使用。JDK8引入了许多新特性,提升了开发效率和代码质量,对于Java开发者来说是必备的工具。 一、JDK8的主要新特性: 1. ...
Java Development Kit (JDK) 8 是Java编程语言的一个重要版本,它引入了许多新特性、增强功能和优化,使得开发人员能够编写更加高效、简洁的代码。中文API文档是为了解决非英语环境下的开发者阅读障碍,提供方便的...
《Java Development Kit 8 (JDK 8) API 文档详解》 JDK 8是Java编程语言的一个重要版本,其API(Application Programming Interface)文档是开发者不可或缺的参考资料。这个文档详细介绍了JDK 8中包含的所有类、...
这里的"jdk-8u202-windows-x64"是一个针对Windows 64位操作系统的JDK 8更新202版本的安装包。在本文中,我们将深入探讨JDK 8的重要特性和安装过程。 首先,JDK 8是Oracle公司发布的Java平台标准版(Java SE)的一个...
1. **JDK 8的基础**: JDK 8是Java历史上的一个里程碑,它引入了诸如Lambda表达式、方法引用、流API(Stream API)、日期和时间API、新的Optional类等重大改进。这些特性极大地提高了代码的简洁性和可读性,同时也...
6. **Optional类**:为了解决null值带来的问题,JDK8引入了`Optional<T>`类,它表示一个值存在或不存在,鼓励开发者避免使用null值。 7. **类型注解**:JDK8增强了注解的使用,允许在类型参数、类型通配符、类型...