《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一1.7.3 创建Optional值

1.7.3 创建Optional值

到目前为止,我们已经讨论了如何使用其他人创建的Optional对象。如果想要编写方法来创建Optional对象,那么有多个方法可以用于此目的,包括Optional.of(result)和Optional.empty()。例如,

ofNullable方法被用来作为可能出现的null值和可选值之间的桥梁。Optional.ofNullable(obj)会在obj不为null的情况下返回Optional.of(obj),否则会返回Optional.empty()。
java.util.Optional 8

  • static Optional of(T value)
  • static Optional ofNullable(T value)
    产生一个具有给定值的Optional。如果value为null,那么第一个方法会抛出一个NullPointerException对象,而第二个方法会产生一个空Optional。
  • static Optional empty()
    产生一个空Optional。
时间: 2024-09-25 23:37:56

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一1.7.3 创建Optional值的相关文章

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一导读

前 言 致读者 本书是按照Java SE 8完全更新后的<Java核心技术 卷Ⅱ 高级特性(原书第10版)>.卷Ⅰ主要介绍了Java语言的一些关键特性:而本卷主要介绍编程人员进行专业软件开发时需要了解的高级主题.因此,与本书卷Ⅰ和之前的版本一样,我们仍将本书定位于用Java技术进行实际项目开发的编程人员. 编写任何一本书籍都难免会有一些错误或不准确的地方.我们非常乐意听到读者的意见.当然,我们更希望对本书问题的报告只听到一次.为此,我们创建了一个FAQ.bug修正以及应急方案的网站http:/

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一第3章 XML

第3章 XML ▲ XML概述 ▲ 使用命名空间 ▲ 解析XML文档 ▲ 流机制解析器 ▲ 验证XML文档 ▲ 生成XML文档 ▲ 使用XPath来定位信息 ▲ XSL转换 Don Box等人在其合著的<Essential XML>(Addison-Wesley出版社2000年出版)的前言中半开玩笑地说道:"可扩展标记语言(Extensible Markup Language,XML)已经取代了Java.设计模式.对象技术,成为软件行业解决世界饥荒的方案."确实,正如你将在

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一1.7.2 不适合使用Optional值的方式

1.7.2 不适合使用Optional值的方式 如果没有正确地使用Optional值,那么相比较以往的得到"某物或null"的方式,你并没有得到任何好处. get方法会在Optional值存在的情况下获得其中包装的元素,或者在不存在的情况下抛出一个NoSuchElementException对象.因此, java.util.Optional 8 T get() 产生这个Optional的值,或者在该Optional为空时,抛出一个NoSuchElement Exception对象. b

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一1.7.4 用f?latMap来构建Optional值的函数

1.7.4 用f?latMap来构建Optional值的函数 假设你有一个可以产生Optional对象的方法f,并且目标类型T具有一个可以产生Optional对象的方法g.如果它们都是普通的方法,那么你可以通过调用s.f().g()来将它们组合起来.但是这种组合没法工作,因为s.f()的类型为Optional,而不是T.因此,需要调用: 如果s.f()的值存在,那么g就可以应用到它上面.否则,就会返回一个空Optional. 很明显,如果有更多的可以产生Optional值的方法或Lambda表达

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.4.2 理解对象序列化的文件格式

2.4.2 理解对象序列化的文件格式 对象序列化是以特殊的文件格式存储对象数据的,当然,你不必了解文件中表示对象的确切字节序列,就可以使用writeObject/readObject方法.但是,我们发现研究这种数据格式对于洞察对象流化的处理过程非常有益.因为其细节显得有些专业,所以如果你对其实现不感兴趣,则可以跳过这一节. 每个文件都是以下面这两个字节的"魔幻数字"开始的 后面紧跟着对象序列化格式的版本号,目前是 (我们在本节中统一使用十六进制数字来表示字节.)然后,是它包含的对象序列

《Java语言导学(原书第6版)》一导读

前 言 自2010年年初Oracle公司收购Sun公司以来,Java语言迎来激动人心的时代.正如Java Community Process计划的活动所印证的,Java语言将不断发展.本书基于Java SE 8(Java Platform Standard Edition 8)并引用其API. 相比本书第5版(针对的是Java版本7),第6版有一些新特点: Lambda表达式使得功能可作为方法参数使用,代码作为数据使用.Lambda表达式描述单个方法接口(也称为功能接口)的实例会更简洁.4.4.

《Java语言导学(原书第6版)》一一3.1 变量

3.1 变量 根据第2章可知,对象的状态存储在字段中: 2.1节已经介绍了字段的概念,但读者仍可能会问:命名字段有什么规则和约定?除了整型,是否还有其他数据类型?字段在声明时是否必须初始化?如果字段没有显式初始化,该字段是否会被赋予一个默认值?本章将会详细解答这些问题.但在此之前,先要明确一些技术差别.Java程序语言同时使用字段和变量.对于新的开发人员而言,这是造成概念混淆的主要原因,因为两者经常看似指代同一个事物.Java程序语言定义了如下变量: 实例变量(非静态字段).就技术而言,对象将个

《Java语言导学(原书第6版)》一3.1 变量

3.1 变量 根据第2章可知,对象的状态存储在字段中: 2.1节已经介绍了字段的概念,但读者仍可能会问:命名字段有什么规则和约定 除了整型,是否还有其他数据类型?字段在声明时是否必须初始化?如果字段没有显式初始化,该字段是否会被赋予一个默认值?本章将会详细解答这些问题.但在此之前,先要明确一些技术差别.Java程序语言同时使用字段和变量.对于新的开发人员而言,这是造成概念混淆的主要原因,因为两者经常看似指代同一个事物.Java程序语言定义了如下变量: 实例变量(非静态字段).就技术而言,对象将个