相关疑难解决方法(0)

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()
        );
    }
}
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

java optional java-stream

21
推荐指数
3
解决办法
793
查看次数

标签 统计

java ×1

java-stream ×1

optional ×1