我正在尝试在java中使用lambdas和stream,但我对它很新.当我尝试创建一个lambda表达式时,我在IntelliJ中遇到了这个错误"lambda转换的目标类型必须是一个接口"
List> callList = prgll.stream() .map(p->(()->{return p.funct();} )) <--- Here I get error .collect(Collectors.toList());
难道我做错了什么?
我怀疑这只是Java的类型推断还不够智能.尝试
.map(p -> (Callable) () -> p.funct())
Stream#map()
是一种类型化方法,因此您可以显式指定类型:
.>map(p -> () -> p.funct())
或者更整洁,使用方法参考:
.>map(p -> p::funct)