【发布时间】:2015-11-18 15:59:20
【问题描述】:
当使用符号 Funciton::andThen 时,如何让 IntellijIDEA 找到核心 java 8 'Function' 接口的 'andThen' 方法?我尝试了很多事情都没有成功。
我的 intellijIDEA 模块配置为 java 8,使用的 sdk 是 oracle java 8,我已经使缓存无效,并尝试了其他一些方法,但编辑器仍然标记然后为:“无法解析方法'andThen' ”。
我可以启动和构建这个示例,所以我认为它与静态代码分析器有关。也许是一个错误?
package foo.bar;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
public class Meh {
public static void main(String... args) {
final List<Function<String, String>> fs = new ArrayList<>();
fs.add(s -> s + "1");
fs.add(s -> s + "2");
final Function<String, String> f =
fs.stream()
//copmiles from cli and project->make, but editor shows: Cannot resolve method 'andThen'
.reduce(Function::andThen)
.get();
System.out.println(f.apply(""));//succesfully prints 12
final Function<String,String> f2 = f.andThen(s-> s+"a");
//succesfully prints 12a
System.out.println(f2.apply(""));
}
}
有趣的是,当我引用 f.andThen 时,静态代码分析器不会报错。只有当我引用 Function::andThen 时才会发生这种情况。
在使用 eclipse 时这不是问题。或者,当从命令行编译时,或者去项目 -> make
【问题讨论】:
标签: java intellij-idea functional-programming java-8