更新时间:2024-04-12 GMT+08:00
分享

移动静态成员

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

执行重构

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

    • 提供有效的目标类名称。
    • Members to be moved列表中,选中要移动的静态成员复选框。
    • Visibility区域中,指定移动的静态成员的可见性修改器,或选择Escalate以自动将可见性设置为所需的级别。
    • 选中Move as enum constant if possible复选框,将常量(即static final字段)作为枚举常量移动到枚举类型。如果枚举类型具有类型参数的构造函数,则这是可能的。

  4. 单击Refactor以应用重构。

示例

例如,让我们将类MoveStaticMembers的所有静态成员移动到枚举类MyEnum。由于MyEnum有一个带有String类型参数的构造函数,因此我们可以使用Move as enum constant if possible选项将STATICFINALSTRstaticStr字段移动为枚举常量。

重构前

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;
    }
}

重构后

class MoveStaticMembers {
    Boolean isTrue;

    void method() {
    }
}

enum MyEnum {
    STATICFINALSTR("TEST"), staticStr("test");
    static List<Integer> staticList;
    static int[] staticN;
    String typeName;

    MyEnum(String name) {
        typeName = name;
    }

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

    private static Boolean staticMethod2() {
        return true;
    }
}

相关文档