[英]How to refactor a lambda expression to a method reference?
我的代码看起来像这样:
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进行重构?
选择lambda,按Alt + Enter,单击“Extract to Method Reference”。
首先,在x + "!"
上进行重构提取方法 码。 然后使用快速修复替换方法引用 。
首先。 IntelliJ IDEA会警告你使用Stream.of()
而不是Arrays#Stream
,因为你没有提供一个Array
但只提供两个String
修好之后,只需点击alt
+在x -> x+ "!"
某个地方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 + "!");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.