
# 引入函数式参数
此重构允许基于适当的函数接口使用匿名类（或函数表达式）包装代码片段，并将其用作方法的参数。
#### 执行重构
1. 在代码编辑器中，选择要转换为函数参数的表达式。
2. 单击右键展示上下文菜单，选择**"重构 \> 引入函数式参数..."**。
3. 在选择适用的函数接口弹窗选择需要的接口。如下图所示： 
   图1选择适用的函数接口   
   ![](https://support.huaweicloud.com/usermanual-codeartside/zh-cn_image_0000002399252917.png)
   
   
4. 选定接口后，会打开**"引入参数"** 对话框，该弹窗提供引入参数的名称和其他重构选项。
   
   - 在**"参数类型"**列表中，为提取的参数选择其中一种的类型。
   
   - 选择是否应将提取的参数"声明为final"参数。
   
   - 要保留原始方法并使用引入的参数定义新方法，请选中**"通过重载方法委托"**选项。
   
   - 要让CodeArts IDE生成函数表达式而不是匿名类，请选中**"转换为函数表达式"** 选项。
     如下图所示：
     图2引入参数   
     ![](https://support.huaweicloud.com/usermanual-codeartside/zh-cn_image_0000002377584365.png) 
   
   
   
   
5. 单击**"重构"**以应用重构。
 
#### 示例
例如，提取表达式"**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();
    }
}
```
