用 IntelliJ IDEA 中的等效方法替换 lambda 表达式
Replace lambda expression with equivalent method in IntelliJ IDEA
是否有 Intellij IDEA 重构可以用函数和函数引用替换 lambda 表达式?
我有:
List<String> convertToASlashBList(Collection<MyBean> beans) {
return beans.stream().map(bean -> "" + bean.getA() + "/" + bean.getB()).collect(toList());
}
我要:
List<String> convertToASlashBList(Collection<MyBean> beans) {
return beans.stream().map(this::convertToASlashB).collect(toList());
}
private String convertToASlashB(MyBean bean) {
return "" + bean.getA() + "/" + bean.getB();
}
有提取匿名的重构class,但这实际上是不同的。
您可以转到该行并按 ALT+ENTER
,也许他们会显示将其替换为其他选项的选项(可能会更改功能)。
我不知道你真正需要什么,但我在这里举了一个例子。
示例:
List<String> convertToASlashBList(Collection<MyBean> beans) {
List<String> converted = new ArrayList<>();
for (MyBean bean : beans) {
converted.add(convertToASlashB(bean));
}
return converted;
}
private String convertToASlashB(MyBean bean) {
return "" + bean.getA() + "/" + bean.getB();
}
您可以分两步完成:
1. select "" + bean.getA() + "/" + bean.getB()
部分并按 Cmd
+Alt
+M
(提取方法)。这将创建您的方法并为您提供 beans.stream().map(bean -> convertToASlashB(bean)).collect(toList())
.
2. 右键单击您的 lambda(它将变灰)并执行 'replace lambda with method reference'
IntelliJ IDEA 中的重构选项太多,很难找到正确的重构选项,甚至很难找到它驻留在 X 中的菜单)LinuxServers 答案的提示使我朝着正确的方向前进。
有两种选择:
- 将光标置于 lambda 并点击
ALT-ENTER
和 select "Extract to method reference"
- Select lambda 主体并执行重构 "Extract Method"(从主菜单或从重构此菜单或
CTRL-ALT-M
),然后立即进行快速修复 ALT-ENTER
"Replace lambda with method reference"
是否有 Intellij IDEA 重构可以用函数和函数引用替换 lambda 表达式?
我有:
List<String> convertToASlashBList(Collection<MyBean> beans) {
return beans.stream().map(bean -> "" + bean.getA() + "/" + bean.getB()).collect(toList());
}
我要:
List<String> convertToASlashBList(Collection<MyBean> beans) {
return beans.stream().map(this::convertToASlashB).collect(toList());
}
private String convertToASlashB(MyBean bean) {
return "" + bean.getA() + "/" + bean.getB();
}
有提取匿名的重构class,但这实际上是不同的。
您可以转到该行并按 ALT+ENTER
,也许他们会显示将其替换为其他选项的选项(可能会更改功能)。
我不知道你真正需要什么,但我在这里举了一个例子。
示例:
List<String> convertToASlashBList(Collection<MyBean> beans) {
List<String> converted = new ArrayList<>();
for (MyBean bean : beans) {
converted.add(convertToASlashB(bean));
}
return converted;
}
private String convertToASlashB(MyBean bean) {
return "" + bean.getA() + "/" + bean.getB();
}
您可以分两步完成:
1. select "" + bean.getA() + "/" + bean.getB()
部分并按 Cmd
+Alt
+M
(提取方法)。这将创建您的方法并为您提供 beans.stream().map(bean -> convertToASlashB(bean)).collect(toList())
.
2. 右键单击您的 lambda(它将变灰)并执行 'replace lambda with method reference'
IntelliJ IDEA 中的重构选项太多,很难找到正确的重构选项,甚至很难找到它驻留在 X 中的菜单)LinuxServers 答案的提示使我朝着正确的方向前进。
有两种选择:
- 将光标置于 lambda 并点击
ALT-ENTER
和 select "Extract to method reference" - Select lambda 主体并执行重构 "Extract Method"(从主菜单或从重构此菜单或
CTRL-ALT-M
),然后立即进行快速修复ALT-ENTER
"Replace lambda with method reference"