我正在尝试在java中使用lambdas和stream,但我对它很新。 我在IntelliJ中遇到此错误“当我尝试制作lambda表达式时,目标类型的lambda转换必须是一个接口”
List<Callable<SomeClass>> callList = prgll.stream()
.map(p->(()->{return p.funct();} )) <--- Here I get error
.collect(Collectors.toList());
我做错了吗?
答案 0 :(得分:26)
我怀疑这只是Java的类型推断还不够智能。尝试
.map(p -> (Callable<SomeClass>) () -> p.funct())
答案 1 :(得分:7)
Stream#map()
是一种typed方法,因此您可以明确指定类型:
.<Callable<SomeClass>>map(p -> () -> p.funct())
或更整洁,使用方法参考:
.<Callable<SomeClass>>map(p -> p::funct)