Java 爪哇语;lambda转换的目标类型必须是接口;

Java 爪哇语;lambda转换的目标类型必须是接口;,java,intellij-idea,lambda,Java,Intellij Idea,Lambda,我试图在java中使用lambdas和streams,但我对它还很陌生。 在尝试生成lambda表达式时,我在IntelliJ“lambda转换的目标类型必须是接口”中遇到了此错误 List<Callable<SomeClass>> callList = prgll.stream() .map(p->(()->{return p.funct();} )) <--- Her

我试图在java中使用lambdas和streams,但我对它还很陌生。 在尝试生成lambda表达式时,我在IntelliJ“lambda转换的目标类型必须是接口”中遇到了此错误

List<Callable<SomeClass>> callList = prgll.stream()
                                          .map(p->(()->{return p.funct();} )) <--- Here I get error
                                          .collect(Collectors.toList());
List callList=prgll.stream()

.map(p->(()->{return p.funct();}))我怀疑这只是Java的类型推断不够聪明。试一试

 .map(p -> (Callable<SomeClass>) () -> p.funct())
.map(p->(可调用)(->p.funct())
是一种方法,因此您可以显式指定类型:

 .<Callable<SomeClass>>map(p -> () -> p.funct())
.map(p->()->p.funct())
或更整洁,使用方法参考:

 .<Callable<SomeClass>>map(p -> p::funct)
.map(p->p::funct)