我有一个与Java 8 Optionals相关的问题。
以下代码会导致编译错误:
如果我们查看
我明白
以下代码会导致编译错误:
Integer number = Optional.ofNullable(new Integer(10));
但是当我们执行以下操作时,它不会起作用,我不理解这是如何工作的:
Integer number = Optional.ofNullable(new Integer(10)).orElse(10);
如果我们查看
Optional.ofNullable()
的文档,它返回类型为static <T> Optional<T> ofNullable(T value)
的对象,这意味着它在内部进行了类型转换,但文档说它的返回类型是Optional
。我明白
.orElse
方法的返回类型是T
,如果它进入orElse
条件,即传入的对象为空,那么它会正常工作,但如果它不是空的,它如何进行类型转换?
Optional.orElse()
看作是Optional.getOrElse()
(在我看来应该这样),同时,把Optional.get()
看作是Optional.getOrThrow()
。 - walenofNullable
和orElse
的用法,但并没有涉及到类型转换!更简单的答案是:如果它不是空的,它将使用您指定的类型new Integer
,如果它是空的(我不知道怎么会是空的),它将以与Integer i = 10;
相同的方式工作。 - Naman