Moc*_*uck 22 java lambda intellij-idea
我正在尝试在java中使用lambdas和stream,但我对它很新.当我尝试创建一个lambda表达式时,我在IntelliJ中遇到了这个错误"lambda转换的目标类型必须是一个接口"
List<Callable<SomeClass>> callList = prgll.stream()
.map(p->(()->{return p.funct();} )) <--- Here I get error
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?
Lou*_*man 28
我怀疑这只是Java的类型推断还不够智能.尝试
.map(p -> (Callable<SomeClass>) () -> p.funct())
Run Code Online (Sandbox Code Playgroud)
Boh*_*ian 10
Stream#map()
是一种类型化方法,因此您可以显式指定类型:
.<Callable<SomeClass>>map(p -> () -> p.funct())
Run Code Online (Sandbox Code Playgroud)
或者更整洁,使用方法参考:
.<Callable<SomeClass>>map(p -> p::funct)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21147 次 |
最近记录: |