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

移动内部类到上一级

此重构支持将内部类移至上层,这个重构将包外的类、函数、变量、常量和命名空间移动到一个包中。

执行重构

  1. 在代码编辑器中,将光标放在要移动到上层的内部类(非静态内部类)的声明位置。
  2. 单击右键展示上下文菜单,选择重构 > 将内部类移动到上一级...”
  3. 在打开的“将内部类移动到上一级”对话框中,提供移动类的名称和其他重构选项。

    • 要保留移动类对其以前的外部类的访问权限,请勾选复选框“将外部类的实例作为参数传递”
    • 要在搜索代码中移动类的引用,请勾选“在注释和字符串中搜索”“搜索文本出现次数”复选框 。

      如下图所示:

      图1 将内部类移动到上一级

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

示例

例如,将InnerClass移动到上层。要保留从InnerClass到OuterClass的访问,OuterClass的实例将作为参数传递给InnerClass。

重构前

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

class OuterClass {
    String str = "test";
    public void outermethod(){
        InnerClass ic = new InnerClass();
        ic.print();
    }

    class InnerClass {
        public void print(){
            System.out.println(str);
        }
    }
}

重构后

“com\refactoring\source\OuterClass.java” 文件删除内部类, 文件内容如下:

class OuterClass {
    String str = "test";
    public void outermethod(){
        InnerClass ic = new InnerClass(this);
        ic.print();
    }
}

新增“com\refactoring\source\InnerClass.java”文件,文件内容如下:

class InnerClass {
    private final OuterClass outerClass;

    public InnerClass(OuterClass outerClass) {
        this.outerClass = outerClass;
    }

    public void print() {
        System.out.println(outerClass.str);
    }
}

相关文档