如何将lambda表达式重构为方法引用?

sla*_*dan 5 java lambda refactoring intellij-idea java-8

我的代码看起来像这样:

class A {
    public void m() {
        Arrays.stream("a", "b")
            .map(x -> x + "!") // <-- lambda expression
            .forEachOrdered(System.out::println);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想将它重构为:

class A {
    public void m() {
        Arrays.stream("a", "b")
            .map(this::t) // <-- method reference
            .forEachOrdered(System.out::println);
    }

    public String t(String x) {
        return x + "!";
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用IntelliJ进行重构?

And*_*ner 18

选择lambda,按Alt + Enter,单击"Extract to Method Reference".

  • @slartidan刚刚尝试了它,它生成了一个`private static String apply(String x){return x +"!";}`,这看起来很好...... (3认同)