引入函数式变量
此重构允许将选定的表达式转换为新的函数类型变量或匿名类。
执行重构
- 在代码编辑器中,选择要转换为函数变量的表达式。
- 单击右键展示上下文菜单,选择 。
- 在打开的引入函数式变量对话框中,选择“将字段作为参数传递”,以使字段作为参数传递到创建的函数表达式。如下图所示:
图1 引入函数式变量
- 单击“重构”以应用重构。
示例
例如,将表达式“Data”+ data.toString()提取到函数变量中。
重构前
“com\refactoring\source\PrintAction.java”文件内容如下:
import java.util.List; class PrintAction implements Runnable { private List<String> data; public PrintAction(List<String> data) { this.data = data; } @Override public void run() { System.out.println("Data" + data.toString()); } }
重构后
“com\refactoring\source\PrintAction.java”文件内容如下:
import java.util.List; import java.util.function.Function; class PrintAction implements Runnable { private List<String> data; public PrintAction(List<String> data) { this.data = data; } @Override public void run() { Function<List<String>, String> listStringFunction = data -> "Data" + data.toString(); System.out.println(listStringFunction.apply(data)); } }