更新时间:2025-08-19 GMT+08:00
分享

移动静态成员

此重构允许将类的静态成员移动到不同的类中。

执行重构

  1. 在代码编辑器中,将光标放置在要移动到另一个类的静态成员(字段或方法)的声明上。
  2. 单击右键展示上下文菜单,选择重构 > 移动静态成员...
  3. 在打开的“移动静态成员”对话框中,提供重构选项。

    • 提供有效的目标类名称。
    • “要移动的成员”列表中,选中要移动的静态成员复选框。
    • “可见性”区域中,指定移动的静态成员的可见性修改器,或选择“升级”以自动将可见性设置为所需的级别。
    • 选中“如果可能,作为枚举常量移动”复选框,将常量(即static final字段)作为枚举常量移动到枚举类型。如果枚举类型的构造函数有类型参数,则可以作为枚举常量进行移动。

      如下图所示:

      图1 移动静态成员

  4. 单击“重构”以应用重构。

示例

例如,将类MoveStaticMembers的静态成员“STATICFINALSTR”移动到枚举类MyEnum。由于MyEnum有一个带有String类型参数的构造函数,因此可以使用“如果可能,作为枚举常量移动选项”STATICFINALSTRstaticStr字段移动为枚举常量。

重构前

“com\refactoring\source\MoveStaticMembers.java”文件内容如下:

package com.refactoring.source;
import java.util.List;

class MoveStaticMembers {
    Boolean isTrue;
    public static final String STATICFINALSTR = "TEST";
    static List<Integer> staticList;
    static int[] staticN;
    private static final String staticStr = "test";

    public static void staticMethod() {
        System.out.println(staticStr);
    }

    private static Boolean staticMethod2() {
        return true;
    }

    void method() {
    }
}

enum MyEnum {
    ;
    String typeName;

    MyEnum(String name) {
        typeName = name;
    }
}

重构后

“com\refactoring\source\MoveStaticMembers.java”文件中的静态成员“STATICFINALSTR”移动到MyEnum中,修改后的文件内容如下:

package com.refactoring.source;
import java.util.List;
class MoveStaticMembers {
    Boolean isTrue;
    static List<Integer> staticList;
    static int[] staticN;
    private static final String staticStr = "test";
    public static void staticMethod() {
        System.out.println(staticStr);
    }
    private static Boolean staticMethod2() {
        return true;
    }
    void method() {
    }
}
enum MyEnum {
    STATICFINALSTR("TEST");
    String typeName;
    MyEnum(String name) {
        typeName = name;
    }
}

相关文档