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(使用前将#替换为@)