Guava的Optional.toJavaUtil()作为方法参考

时间:2018-03-01 08:53:42

标签: java java-8 guava optional

我一直试图将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 methodstatic method,两者都有相同的名称。如果我使用lambda语法,两种变体都可以正常工作:

html

问:有没有办法让方法参考? (例如,通过某种方式指定我想要使用的两种方法中的哪一种?)

0 个答案:

没有答案