对 Java 8 可选* 值的操作。

2024-01-28

Java 8 有许多可选类,例如OptionalDouble, OptionalInt, OptionalLong.

有没有一种使用同类可选值的好方法?也就是说,我希望能够做到:

OptionalDouble d1 = OptionalDouble.of(1.);
OptionalDouble d2 = OptionalDouble.of(2.);
OptionalDouble d3 = OptionalDouble.of(3.);

OptionalDouble result = d1.add(d2).multiply(d3);

当然,如果其中任何一个为“空”,则结果应该为空。经过一番谷歌搜索后,我发现了一些人们正在使用这些函数的代码示例(例如add)但它不再是 API 的一部分(不再?)。


主要目的Optional是表示一个函数的返回可能不存在的值 http://mail.openjdk.java.net/pipermail/lambda-dev/2012-September/005952.html.

流的原始专业化的目的是避免装箱/拆箱开销。和OptionalInt和朋友们,拳击是不可避免的(如果它们不存在,情况会更糟,因为替代方案是Optional<Integer>),但其目的是让处理返回值的人立即将其拆箱(或者提供默认值,或者如果不存在则抛出异常),然后处理实际的原语。

支持所有附加 API 对可选原语进行算术、比较等操作会增加 API 的臃肿程度。使用它会导致代码混乱、缓慢,与 Java 中已经存在的完美的算术表达式语法相比,这是一个相当大的缺点。简而言之,在可选原语上添加一堆操作被认为是没有用的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对 Java 8 可选* 值的操作。 的相关文章

随机推荐

  • 使用 data.table 包重新编码变量

    如果我想使用 R 重新编码变量data table 语法是什么 我看到了一些 ans 但发现它们不合适 例如如果我有一个名为gender 我想将性别 0 重新编码为未知 1 为男性 2 为女性 这是我尝试的方法 Name lt c John
  • 应用程序购买推荐链接[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有什么方法可以创建指向 App Store 的引用链接 并在链接中添加一些设备 ID 例如 b7a
  • 区分注册和使用 Meteor.loginWithExternalService() 登录

    Meteor 提供了一组loginWithExternalService 方法 例如loginWithTwitter 允许用户创建帐户或通过这些第三方身份验证提供商重新登录 但有没有办法区分这两种行为呢 即让人们sign in与 Twitt
  • 不为特定列更改创建修订

    我有一个经过审核的模型 其中有一列我必须定期更新 我不想为此专栏的每次更改创建修订版 即使属性 X 已更改 是否有任何配置不创建修订版 执行您要求的操作的唯一开箱即用的方法是实施有条件审计 文档中描述的条件审核方法要求用户提供自己的事件侦听
  • 来自基于 OWIN 的 WebAPI 的飞行前选项 CORS 令牌请求出现 400 错误

    确实很奇怪 我尝试向 WebAPI2 基于 OWIN 发出 CORS 请求以获取身份验证令牌 每隔一段时间它总是失败 就像第一个请求失败 但第二个请求将通过 第三个失败了 但第四个会成功 我不明白为什么它有一半的时间有效 我检查浏览器请求
  • Kivy:如何创建透明背景/画布,使按钮看起来漂浮在桌面上

    我正在尝试创建一个在单板计算机 特别是使用 armbian 的 OrangePi One PC 上运行的视频播放应用程序 我在使用 ffpyplayer kivy 使用的视频播放器 创建流畅的视频时遇到问题 因此 我决定简单地运行在视频前面
  • DateTime AddMinutes 方法不起作用

    我的方法的目的是获取 currentTime 并将其设置回 20 分钟 据我所知 我的方法是正确的 但输出显示了其他内容 这是我的代码 DateTime currentTime DateTime Now double minuts 20 c
  • Shell编程:同时执行两个应用程序

    我有两个应用程序 我们称它们为 APP1 和 APP2 我想要那些 两个在我的机器上并行执行 它们没有必要完全从 同一时间 但应该大致在同一时间开始 最初的想法是有一个外壳 脚本如下所示 APP1 APP2 这是技巧还是我需要插入等待语句以
  • 为什么 std::ranges::view_interface 使用 CRTP

    根据cppreference 定义视图的辅助类模板view interface https en cppreference com w cpp ranges view interface使用奇怪的重复模板模式 CRTP 技术 它们背后的设计
  • Vim:重新映射键以切换行编号

    I added set number nnoremap
  • 音频会话:在 iOS 7.1 中使用测量模式会导致音量过低/没有声音

    将 AVAudioSessionModeMeasurement 与 AVAudioSessionCategoryPlayAndRecord 一起使用过去可以在 iOS 5 x 6 x 和 7 0 下正常工作 但现在在 iOS 7 1 下的某
  • 如何在 symfony 中尝试 Catch

    情况 trollCommand php foreach trolltypes as type type Frost RandomBroken Forest try output gt writeln type troll get type
  • Typeahead - 可滚动下拉菜单

    看起来 CSS 不适用于我的 Typeahead 我正在尝试重现可滚动下拉菜单 如下所示https twitter github io typeahead js examples https twitter github io typeah
  • Eclipse Juno 中的全屏编辑器 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有一些插件允许在 Eclipse 中进行全屏编辑 但我找不到可以在 Juno 上安装的插件 有谁知道这样的事情是否存在 例如 当我在市场上搜索 全屏
  • 如何用猪拉丁语组合/连接两个袋子

    我有两个数据集 A uid url B uid url 现在我做了一个cogroup C COGROUP A BY uid B BY uid 我想将 C 更改为 group AS uid DISTINCT A url B url 我的问题是
  • MVC模型布尔显示是或否

    我在 MVC 4 实体框架 4 5 的模型中有一个布尔字段 我想在我的视图中显示该字段 我用这个电话 item isTrue 但我得到的是真还是假 我想在 true 时得到 yes 在 false 时得到 no 请问我该怎么办 在您看来 i
  • PHP 从视频中提取音频

    我需要一种从某些视频中提取音频的方法 用 PHP 我有来自 YouTube 的视频流 所以我真的很喜欢它 如果它是动态流 而不是我必须将其保存到临时目录并在那里处理它 尽管这是可以接受的 谢谢 Isaac Waller编辑 更具体地说 我有
  • 将动画翻译到 Android 中的正确位置

    我在我的应用程序中为图像创建了动画 图像从屏幕中间开始直到左上角 现在我需要确保图像放置在所有设备中的正确位置 左上角 目前 对于不同的设备 它被放置在左上角的不同位置 我该如何解决它 我的代码如下
  • 修改flexdashboard的shinyauthr

    我已经构建了一个使用运行时闪亮的交互式 Flexdashboard 我想创建一个用户身份验证登录模块 页面 我偶然发现保罗 坎贝尔 Paul Campbell 的闪亮作者包 https paul rbind io 2018 11 04 in
  • 对 Java 8 可选* 值的操作。

    Java 8 有许多可选类 例如OptionalDouble OptionalInt OptionalLong 有没有一种使用同类可选值的好方法 也就是说 我希望能够做到 OptionalDouble d1 OptionalDouble o