引入函数式参数
此重构允许基于适当的函数接口使用匿名类(或函数表达式)包装代码片段,并将其用作方法的参数。
执行重构
- 在代码编辑器中,选择要转换为函数参数的表达式。
- 单击右键展示上下文菜单,选择 。
- 在选择适用的函数接口弹窗选择需要的接口。如下图所示:
图1 选择适用的函数接口
- 选定接口后,会打开“引入参数”对话框,该弹窗提供引入参数的名称和其他重构选项。
- 在“参数类型”列表中,为提取的参数选择其中一种的类型。
- 选择是否应将提取的参数“声明为final”参数。
- 要保留原始方法并使用引入的参数定义新方法,请选中“通过重载方法委托”选项。
- 要让CodeArts IDE生成函数表达式而不是匿名类,请选中“转换为函数表达式”选项。
如下图所示:
图2 引入参数
- 单击“重构”以应用重构。
示例
例如,提取表达式“Hello World!”.toUpperCase()作为generateText方法的参数。
重构前
“com\refactoring\source\IntroduceFunctionalParameter.java”文件内容如下:
class IntroduceFunctionalParameter { public static void main(String[] args) { System.out.println(generateText()); } private static String generateText() { return "Hello World!".toUpperCase(); } }
重构后
“com\refactoring\source\IntroduceFunctionalParameter.java”文件内容如下:
import java.util.function.Supplier; class IntroduceFunctionalParameter { public static void main(String[] args) { System.out.println(generateText("Hello World!"::toUpperCase)); } private static String generateText(Supplier<String> supplier) { return supplier.get(); } }