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);
Run Code Online (Sandbox Code Playgroud)
当然,如果它们中的任何一个"空",结果应该是空的.在谷歌搜索了一下后,我发现了一些代码示例,人们正在使用这些函数(例如add),但它不是API的一部分(不再是?).
的主要目的Optional是表示函数可能不存在的返回值。
流的原始专业化的目的是避免装箱/拆箱开销。和OptionalInt朋友一起,存在不可避免的装箱级别(如果它们不存在,情况会更糟,因为替代方案是Optional<Integer>),但其目的是让处理返回值的人立即将其拆箱(或提供默认值或抛出一个如果不存在则例外),然后从那时起处理实际的原语。
支持所有附加 API 对可选原语进行算术、比较等操作会增加 API 的臃肿程度。使用它会导致代码混乱、缓慢,与 Java 中已经存在的完美的算术表达式语法相比,这是一个相当大的缺点。简而言之,在可选原语上添加一堆操作被认为是没有用的。
| 归档时间: |
|
| 查看次数: |
1965 次 |
| 最近记录: |