
# 提取方法对象
此重构允许将任意代码片段单独移动到新类的方法中，以便进一步将该方法分解为同一对象上的其他方法。
#### 执行重构
1. 在代码编辑器中，选择要提取到包装类的新方法的代码片段。
2. 单击右键展示上下文菜单，选择**"重构 \> 提取方法对象..."**。
3. 在打开的**"提取方法对象"** 对话框中，提供重构选项。
   
   - **"创建内部类"**：选择创建新的内部类。所有局部变量都转换为此类的字段。提供类的名称及其可见性修饰符。
   
   - **"创建匿名类"**：选择创建新对象并提供需要创建方法的名称。
   
   - 在**"参数"** 区域中，选择变量作为方法参数。
     如下图所示：
     图1提取方法对象   
     ![](https://support.huaweicloud.com/usermanual-codeartside/zh-cn_image_0000002385342277.png "点击放大") 
   
   
   
   
4. 单击**"重构"**以应用重构。
 
#### 示例
例如，将包含 **println** 语句的**for** 循环提取到**Printer**包装类的新方法中。
**重构前**
"com\\refactoring\\source\\ExtractMethodObject.java"文件内容如下：
```
class ExtractMethodObject {
   public static void main(String[] args) {
      String text = "Hello World!";
      int n = 5;
      for (int i = 0; i < n; i++) {
         System.out.println(text);
      }
   }
}
```
**重构后**
"com\\refactoring\\source\\ExtractMethodObject.java"文件内容如下：
```
class ExtractMethodObject {
   public static void main(String[] args) {
      String text = "Hello World!";
      int n = 5;
      new Printer(text, n).invoke();
   }
   private static class Printer {
      private String text;
      private int n;
      public Printer(String text, int n) {
         this.text = text;
         this.n = n;
      }
      public void invoke() {
         for (int i = 0; i < n; i++) {
            System.out.println(text);
         }
      }
   }
}
```
