Java 如何在Eclipse中将静态内部类重构为顶级类?

Java 如何在Eclipse中将静态内部类重构为顶级类?,java,eclipse,automated-refactoring,Java,Eclipse,Automated Refactoring,对于以下场景,我很难找到正确的重构选项: 我有这样的代码(在Outer.java中): 我正在寻找一种方法来选择internal,并将其转换为顶级类,在它自己的.java源文件中。我知道这很容易通过复制/粘贴等手动完成,但是内部类在很多地方都被引用,我希望重构选项能够在引用它的任何地方处理更改 我尝试了Refactor->Extract Class…选项,但这对名为data的字段产生了一些奇怪的影响,我不太明白 Eclipse版本是3.5.1伽利略 如何将静态内部类重构为顶级类 编辑:不敢相信

对于以下场景,我很难找到正确的重构选项:

我有这样的代码(在Outer.java中):

我正在寻找一种方法来选择internal,并将其转换为顶级类,在它自己的
.java
源文件中。我知道这很容易通过复制/粘贴等手动完成,但是内部类在很多地方都被引用,我希望重构选项能够在引用它的任何地方处理更改

我尝试了
Refactor->Extract Class…
选项,但这对名为
data
的字段产生了一些奇怪的影响,我不太明白

Eclipse版本是3.5.1伽利略

如何将静态内部类重构为顶级类



编辑:不敢相信我忽略了这个选项。谢谢你们所有的正确答案,+1给你们所有人。我仍然需要接受答案,因此如果有任何更有用的信息,例如脚本中的gotchas,那么留下答案仍然是有目的的。

这很容易,我不敢相信我错过了它:

将光标放在内部类型的任意位置,右键单击并选择:
重构->将成员类型转换为顶级…

(默认设置中没有快捷方式)

这会自动提取内部类型,并将其放置在自己的文件中,与外部类型位于同一个包和目录中

更新


在Eclipse的更高版本中,此重构已重命名为“将类型移动到新文件”

我有3.4.1,如果我右键单击内部重构,我有“将成员类型转换到顶级…”选项,这正是您想要的。

使用重构->将成员转换为顶级类型提取类不是您想要的

我只是使用Eclipse3.4.2来实现这一点

  • 选择内部
  • 右键单击“重构->将成员类型转换为顶级…”

  • 为了完整起见,Eclipse的4.x版本已经改变了术语,现在他们将该操作称为
    将类型移动到新文件…

    适用于Intellj2018.1

  • 在内部类中单击鼠标右键
  • 重构
  • 移动
  • 上楼

  • 在Helios版本中,该功能似乎已重命名为“将类型移动到新文件…”。请确保仅选择类/接口,而不是其所有内容。这也适用于android studio,只需执行一个附加步骤(重构->移动->…),也可以通过快捷方式F6实现。如果有这么多的内部类呢?我必须一个接一个地做吗?
    public class Outer {
    
        // ... class stuff
    
        public static class Inner {
            // ... inner class stuff   
        }
    }