gpt4 book ai didi

java - 为什么没有 OptionalInt.ofNullable(Integer);

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:38 25 4
gpt4 key购买 nike

没有的原因是什么:

OptionalInt.ofNullable(Integer);

如果您想将可选/可为空的 Integer 转换为 OptionalInt,这似乎是一个完美的选择。我目前正在使用我写的这个 util 方法:

 public static OptionalInt optionalIntOfNullable(Integer integer){
return integer == null ? OptionalInt.empty() : OptionalInt.of(integer);
}

什么还不错,但是,我想知道我是否遗漏了什么。

最佳答案

OptionalInt的优势在 Optional<Integer>是如果源是原始 int 则可以避免装箱操作值(value)。

如果源已经是 Integer,则不适用.在这种情况下,如果您的下一个操作需要 int , 拆箱操作将总是发生,要么在你构造一个OptionalInt 时发生。或者在使用 Optional<Integer> 链接下一个操作时.所以使用 OptionalInt那时没有任何优势。

请记住,将这些类用作参数类型并非目的,因此不应有代码期待 OptionalInt。作为输入。引用a recent statement from Brian Goetz :

Our intention was to provide a limited mechanism for library method return types where there needed to be a clear way to represent "no result", and using null for such was overwhelmingly likely to cause errors.

(我强调)

顺便说一句,您可以转换 Optional<Integer>OptionalInt没有条件运算符使用 Optional 的常规操作:

Integer boxed=null;
OptionalInt optInt=Optional.ofNullable(boxed)
.map(OptionalInt::of).orElseGet(OptionalInt::empty);

从 Java 9 开始,您还可以使用

OptionalInt optInt=Stream.ofNullable(boxed).mapToInt(Integer::intValue).findAny();

但是,如前所述,这不是必需的,因为通常您只需指定将消耗 int 的后续操作即可。或 Integer ,如果存在。这适用于两者,OptionalOptionalInt .

关于java - 为什么没有 OptionalInt.ofNullable(Integer);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26364330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com