use*_*861 3 java optional java-8
我对Java 8 Optionals有疑问.
以下代码给出了编译错误:
Integer number = Optional.ofNullable(new Integer(10));
Run Code Online (Sandbox Code Playgroud)
但是,当我们做以下它不,我不明白这是怎么工作:
Integer number = Optional.ofNullable(new Integer(10)).orElse(10);
Run Code Online (Sandbox Code Playgroud)
如果我们查看文档Optional.ofNullable()
,它会返回一个类型的对象static <T> Optional<T> ofNullable(T value)
,表示它是内部类型转换,但文档说它的返回类型是Optional
.
我得到的.orElse
方法返回类型T
,如果它进入orElse
条件,它将工作正常,即如果传入的对象是null
,但如果它不是null它是如何对它进行类型转换?
看一下方法的声明,
public static <T> Optional<T> ofNullable(T value)
Run Code Online (Sandbox Code Playgroud)
所以这需要T并返回Optional<T>
所以在你的情况下它需要Integer
并返回一个Optional<Integer>
所以当你这样做的时候
Optional.ofNullable(new Integer(10)).orElse(10);
Run Code Online (Sandbox Code Playgroud)
该orElse
调用将解包该可选项并返回其中的值(如果它不为空).否则它只返回给定的值.
更新
根据以下注释,您可以在将作业留给Autoboxing的同时进一步简化它.
Optional.ofNullable(10).orElse(10);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
656 次 |
最近记录: |