你可以这样做:

Optional resultOpt = Optional.of(find1()

.orElseGet(() -> find2()

.orElseGet(() -> find3()

.orElseThrow(() -> new WhatEverException()))));

虽然我不确定它提高了可读性IMO.番石榴提供了一种连锁方式:

import com.google.common.base.Optional;

Optional resultOpt = s.find1().or(s.find2()).or(s.find3());

它可能是您的问题的另一个替代方案,但不使用JDK中的标准可选类.

如果要保留标准API,可以编写一个简单的实用方法:

static Optional or(Optional first, Optional second) {

return first.isPresent() ? first : second;

}

接着:

Optional resultOpt = or(s.find1(), or(s.find2(), s.find3()));

如果你有很多可选的链接,也许最好使用Stream方法,如其他已经提到的.

java可选项_在Java中链接可选项8相关推荐

  1. java console不见了_解决eclipse中console控制选项不见了的方法

    eclipse是一款用于编译java语言的程序,利用这款软件我们可以制作很多有趣的小程序,也可以制作一些大型的软件项目.在实际的操作中,eclipse是由多个工具栏组成的,其中console就是用于查 ...

  2. java coin介绍_代码示例中的Java 7:Project Coin

    java coin介绍 该博客通过代码示例介绍了一些新的Java 7功能,这些项目在Project Coin一词下进行了概述. Project Coin的目标是向JDK 7添加一组小的语言更改.这些更 ...

  3. ubuntu java classpath 设置_在Ubuntu中正确设置java classpath和java_home

    我有错误 Exception in thread"main" java.lang.NoClassDefFoundError: 当我尝试在Ubuntu上运行编译类时.我使用的是一个非 ...

  4. java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创

    由于项目中用到了Applet与Servlet之间(客户端用Applet.Server端用Servlet)的通信,要求: 1:>客户端与服务端必须出Log. 2:>浏览器在加载Applet时 ...

  5. java jar 目录_将Java类路径中的所有jar包括在一个目录中

    有没有一种方法可以将所有的jar文件包含在类路径的目录中? 我正在尝试java -classpath lib / *.jar :. my.package.Program,它无法找到当然在这些罐子里的类 ...

  6. java gradle构建_在Gradle中为JPMS构建Java 6-8库

    java gradle构建 通过提供Java 9 module-info.class了解如何使用Gradle构建支持JPMS( Java平台模块系统 )的Java 6-8库. 介绍 如果您需要JPMS ...

  7. java避免空指针异常_避免Java中的空指针异常

    java避免空指针异常 空指针异常是Java中最常见,最烦人的异常. 在这篇文章中,我想避免这种不希望的异常. 首先让我们创建引发空指针异常的示例 private Boolean isFinished ...

  8. java 异常对象_在java中的异常处理中的异常对象是什么

    展开全部 Exception类以及他的子类 的一个实例对象 比如32313133353236313431303231363533e58685e5aeb931333264633563 常见异常 1. j ...

  9. java skip函数_【Java必修课】图说Stream中的skip()和limit()方法及组合使用

    1 简介 本文将讲解Java 8 Stream中的两个方法:skip()和limit().这两个方法是Stream很常用的,不仅各自会被高频使用,还可以组合出现,并能实现一些小功能,如subList和 ...

  10. java方法重载_在Python中该如何实现Java的重写与重载

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:清风python PS:如有需要Python学习资料的小伙伴可以加点击 ...

最新文章

  1. 卡片使用_APP必备的设计元素!卡片
  2. 漫画 | 人到中年,一地鸡毛
  3. VC++如何判断当前操作系统是32位还是64位?
  4. Android插件化原理解析——ContentProvider的插件化
  5. TYVJ P1051 选课 Label:多叉转二叉树形dp(虐心♥)
  6. 前端学习(3104):react-hello-虚拟dom和真实dom
  7. mysql转移数增删改查_MySql CURD操作(数据的增删改查)
  8. VMware中的三种网络模式-----Host-only模式
  9. WEB消息提醒实现之二 实现方式-websocket实现方式
  10. 统一配置中心选型对比
  11. java的字符_Java中的字符
  12. postman下载及安装
  13. 欣赏的心态去发现生活中的美
  14. [UWP开发] Facebook SDK使用(一) —— 配置SDK及Facebook登陆
  15. canvas实现点线动画效果
  16. IIS 服务器常见漏洞
  17. Simulink仿真入门到精通(五) Simulink模型的仿真
  18. [逆向]汇编JCC指令举例
  19. app模式会被第三方平台模式取代吗_未来APP将取代移动网站? - 搜外问答
  20. 机器学习中的特征工程详解

热门文章

  1. 从C# 3.0到F#
  2. 截取数组中的第i个元素,并返回截取后的结果
  3. 【知识整理】这可能是最好的RxJava 2.x 入门教程(四)
  4. Docker的常规应用手册
  5. Swift - RunTime(动态性) 问题 浅析
  6. 20135337——Linux内核分析:第十七章 模块与设备
  7. 今天发个技术贴,增加自信心
  8. UIKit Particle Systems in iOS 5 Tutorial ( 附雨的粒子效果 )
  9. ubunto中常出现的问题
  10. jsp基础速成精华讲解