Stream.findFirst 不同于 Optional.of?
假设我有两个类和两个方法:
class Scratch {
private class A{}
private class B extends A{}
public Optional<A> getItems(List<String> items){
return items.stream()
.map(s -> new B())
.findFirst();
}
public Optional<A> getItems2(List<String> items){
return Optional.of(
items.stream()
.map(s -> new B())
.findFirst()
.get()
);
}
}
为什么编译而给出编译器错误getItems2
getItems
incompatible types: java.util.Optional<Scratch.B> cannot be converted to java.util.Optional<Scratch.A>
所以当我返回的值由 并用编译器再次包装它时,编译器会识别继承,但是如果我直接使用的结果,则不会。get
Optional
findFirst
Optional.of
findFirst