我的代码如下所示:
class A {
public void m() {
Arrays.stream("a", "b")
.map(x -> x + "!") // <-- lambda expression
.forEachOrdered(System.out::println);
}
}
我想将其重构为:
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 + "!";
}
}
如何使用IntelliJ进行重构?
答案 0 :(得分:14)
选择lambda,按Alt + Enter,单击“Extract to Method Reference”。
答案 1 :(得分:2)
首先,在x + "!"
代码上进行重构提取方法。然后使用快速修复替换方法参考。
答案 2 :(得分:0)
首先。 IntelliJ IDEA会警告您使用Stream.of()
代替Arrays#Stream
,因为您没有提供Array
而只提供两个String
修好后,只需点击alt
+ enter
站在x -> x+ "!"
的某个位置,然后按Extract to Method reference
但公平地说......如果这一小段代码是“真正的交易”,那么请不要。它会降低可读性。
为此,您最好使用以下内容:
System.out.println(String.join("!\n", new String[]{"a", "b"}));
或
Stream.of("a", "b").forEach(s -> System.out.printLn(s + "!"));
甚至更好:
for (String s : Arrays.asList("a", "b")) {
System.out.println(s + "!");
}