
# 将匿名类转换为内部类
此重构允许将匿名类转换为重命名的内部类。
#### 执行重构
1. 在编辑器中，将光标放置在要转换为内部类的匿名类表达式中的任何位置。
2. 单击右键展示上下文菜单，选择**"重构 \> 转换匿名类为内部类"。**
3. 在打开的**"转换匿名类为内部类"** 对话框中，提供重构参数。
   
   - 提供内部类的名称并选择是否将其创建为静态类。
   
   - 在**"构造函数参数"** 区域中，提供要用作类构造函数参数的变量的名称。使用工具栏按钮对参数重新排序。
     如下图所示：
     图1转换匿名类为内部类   
     ![](https://support.huaweicloud.com/usermanual-codeartside/zh-cn_image_0000002343706306.png) 
   
   
   
   
4. 单击**"重构"**以应用重构。
 
#### 示例
例如，将用作**方法** 返回值的匿名类表达式转换为内部静态类**MyTestClass**。
**重构前**
"com\\refactoring\\source\\AnonymousToInner.java"文件内容如下：
```
class AnonymousToInner {
   public TestClass method() {
      final int i = 0;
      final String str = "string";
      return new TestClass() {
         public String str () {
            return str;
         }
         public int publicMethod() {
            return i;
         }
      };
   }
}
```
同时，在"com\\refactoring\\source\\TestClass.java"文件中定义"TestClass"类，文件内容如下：
```
package com.refactoring.source;
public class TestClass {
}
```
**重构后**
"com\\refactoring\\source\\TestClass.java"文件中定义"TestClass"类内容不变，"com\\refactoring\\source\\AnonymousToInner.java"文件内容如下：
```
class AnonymousToInner {
   public TestClass method() {
      final int i = 0;
      final String str = "string";
      return new MyTestClass(str, i);
   }
   private static class MyTestClass extends TestClass {
      private final String str;
      private final int i;
      public MyTestClass(String str, int i) {
         this.str = str;
         this.i = i;
      }
      public String str () {
         return str;
      }
      public int publicMethod() {
         return i;
      }
   }
}
```
