为何Stream调用findFirst(op->op.identify(args))报错:无法解析方法?
问题原因分析
核心问题是你对Stream.findFirst()方法的API用法理解有误:
findFirst()是无参方法,它的作用是直接返回流中的第一个元素(包装为Optional<Operation>),并不接受任何lambda表达式作为参数。你直接给findFirst()传入op->op.identify(args)属于语法错误,IDE提示无法解析方法,本质是因为不存在这样的方法重载。- 而
filter()方法的设计就是接收Predicate类型的lambda(即你写的op->op.identify(args)),用来过滤流中满足条件的元素,之后再调用无参的findFirst(),完全符合Stream API的规范写法,因此可以正常运行。
你怀疑Arrays.stream()返回Object类型流是多余的,它确实返回Stream<Operation>,但问题和流的元素类型无关,纯粹是用错了方法。
内容的提问来源于stack exchange,提问作者Sergey Zolotarev
相关产品推荐
相关产品推荐

