
# 将内部类或实例转换为静态
通过此重构，可以将内部类转换为嵌套的静态类，或将实例方法转换为静态方法。
#### 执行重构
1. 在代码编辑器中，将光标放在要转换为静态的类或方法的声明上。
2. 单击右键展示上下文菜单，选择**"重构 \> 使静态..."**。
3. 在打开的**"将Class设为静态"** 对话框中，提供重构参数。
   
   - 如果类或方法包含对外部类字段的引用，则可以将被引用的对象作为参数传递给类构造函数，或者将被引用的字段作为方法的参数传递给类构造函数。如下图所示：
     图1将Class设为静态   
     ![](https://support.huaweicloud.com/usermanual-codeartside/zh-cn_image_0000002377744273.png "点击放大") 
   
   - 否则，如果类或方法不包含对外部类字段的引用，则可以用类引用替换实例限定符。如下图所示：
     图2将Class设为静态   
     ![](https://support.huaweicloud.com/usermanual-codeartside/zh-cn_image_0000002343706298.png) 
   
   
   
   
4. 单击**"重构"**以应用重构。
 
#### 示例
作为一个例子，将**Inner** 内部类转换为嵌套的静态类。由于**Inner** 类包含对**Outer** 类的**message** 字段的引用，可以将**Outer** 对象和**message** 字段作为**Inner**类构造函数的参数添加进去。
**重构前**
"com\\refactoring\\source\\Outer.java"文件内容如下：
```
class Outer {
   public String message;
   public static void main(String[] args) {
   }
   class Inner{
      public void print() {
         System.out.println(message);
      }
   }
}
```
**重构后**
"com\\refactoring\\source\\Outer.java"文件内容如下：
```
class Outer {
   public String message;
   public static void main(String[] args) {
   }
   static class Inner {
      
      private String message;
      public Inner( String message) {
         this.message = message;
      }
      public void print() {
         System.out.println(message);
      }
   }
}
```
