我一直试图将map
作为方法参考传递给Optional.map()
方法(Stream.map()
和aLegacyService.getGuavaOptional()
.toJavaUtil()
.map(MyPojo::getAnotherGuavaOptional)
.flatMap(Optional::toJavaUtil); // <-- This doesn't compile
)。
我的代码的简化示例:
Error:(177, 72) java: invalid method reference
non-static method toJavaUtil() cannot be referenced from a static context
编译器给了我一个神秘的错误:
.flatMap(opt -> opt.toJavaUtil()) // This is OK
// and
.flatMap(opt -> Optional.toJavaUtil(opt)); // Also OK
我认为原因是有两种方法:instance method和static method,两者都有相同的名称。如果我使用lambda语法,两种变体都可以正常工作:
html
问:有没有办法让方法参考? (例如,通过某种方式指定我想要使用的两种方法中的哪一种?)