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

Gru*_*eck 34 java eclipse automated-refactoring

我无法为以下场景找到正确的重构选项:

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

public class Outer {

    // ... class stuff

    public static class Inner {
        // ... inner class stuff   
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我已经尝试过这个选项,Refactor -> Extract Class...但是对于一个data我不太了解的字段做了一些奇怪的事情.

Eclipse版本是3.5.1 Galileo.

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


编辑:不敢相信我忽略了这样做的选择.感谢您的所有正确答案,给大家+1.我仍然需要接受一个答案,所以如果有更多有用的信息,例如与脚本有关,那么仍然有一个留下答案的目的.

Gru*_*eck 49

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

将光标放在内部类型的任何位置,右键单击并选择:
Refactor -> Convert Member Type to Top Level...

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

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

更新

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

  • 似乎在Helios版本中,功能已重命名为"将类型移动到新文件...". (11认同)
  • 这可能很容易,但我通过阅读这个答案找到了它! (3认同)
  • 并确保仅选择类/接口,而不是其所有内容。 (2认同)
  • 这也适用于Android工作室,有一个额外的步骤(重构 - >移动 - > ...),也可以用快捷键F6实现. (2认同)

Tom*_*Tom 6

为了完整起见,Eclipse的4.x版本已经更改了术语,现在他们将该操作称为 Move Type to New File...

将类型移动到新文件