可以说我有两个类和两个方法:
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()
);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么getItems2编译时getItems会出现编译器错误
incompatible types: java.util.Optional<Scratch.B> cannot be converted to java.util.Optional<Scratch.A>
Run Code Online (Sandbox Code Playgroud)
所以,当我返回get的值和使用编译器再次包装它时,会识别继承,但如果我直接使用结果,则不会.OptionalfindFirstOptional.offindFirst