Tim*_*the 11 java optional java-8
有没有一个很好的理由没有:
OptionalInt.ofNullable(Integer);
Run Code Online (Sandbox Code Playgroud)
如果你想将一个可选/可空的Integer转换为OptionalInt,它似乎是一个完美的契合.我目前正在使用我写的这个util方法:
public static OptionalInt optionalIntOfNullable(Integer integer){
return integer == null ? OptionalInt.empty() : OptionalInt.of(integer);
}
Run Code Online (Sandbox Code Playgroud)
那不是那么糟糕,但是,我想知道我是否错过了什么.
Hol*_*ger 14
的优势OptionalInt比Optional<Integer>是你能避免装箱操作如果源是一种原始的int价值.
如果源已经是,则不适用Integer.在这种情况下,如果您的下一个操作需要a int,则在您构造或使用a链接下一个操作时,将始终发生取消装箱操作.所以使用提供没有优势.OptionalIntOptional<Integer>OptionalInt
请记住,这些类不打算用作参数类型,因此不应该有任何代码需要OptionalInt输入.引用Brian Goetz最近的声明:
我们的目的是为库方法返回类型提供一种有限的机制,其中需要一种明确的方式来表示"无结果",并且使用
null这种方法绝对可能导致错误.
(我强调)
顺便说一句,您可以使用以下常规操作将a转换Optional<Integer>为OptionalInt没有条件运算符的Optional:
Integer boxed=null;
OptionalInt optInt=Optional.ofNullable(boxed)
.map(OptionalInt::of).orElseGet(OptionalInt::empty);
Run Code Online (Sandbox Code Playgroud)
从Java 9开始,您也可以使用
OptionalInt optInt=Stream.ofNullable(boxed).mapToInt(Integer::intValue).findAny();
Run Code Online (Sandbox Code Playgroud)
但是,如上所述,它通常不需要像通常那样只指定后续操作,否则将消耗int或者Integer,如果存在的话.这适用于Optional和OptionalInt.
| 归档时间: |
|
| 查看次数: |
3153 次 |
| 最近记录: |