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

时间:2010-01-22 14:43:22

标签: java eclipse automated-refactoring

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

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

public class Outer {

    // ... class stuff

    public static class Inner {
        // ... inner class stuff   
    }
}

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

我尝试了Refactor -> Extract Class...这个选项,但这对我称之为data的字段做了一些奇怪的事情。

Eclipse版本是3.5.1 Galileo。

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


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

6 个答案:

答案 0 :(得分:48)

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

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

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

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

<强>更新

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

答案 1 :(得分:6)

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

Move type to new file

答案 2 :(得分:3)

Extract Class不是你想要的。

我刚刚使用Eclipse 3.4.2

完成了这项工作
  1. 选择内部
  2. 右键点击'重构 - &gt;将会员类型转换为顶级...'

答案 3 :(得分:3)

对于Intellj2018.1。

  1. 右键单击内部类
  2. 重构
  3. 移动
  4. 移至上一级
  5. enter image description here

    enter image description here

答案 4 :(得分:2)

我有3.4.1,如果我右键单击Inner,&gt;重构,我有“隐蔽成员类型到顶级...”选项,这正是您想要的。

答案 5 :(得分:2)

使用重构 - &gt; 将会员转换为顶级类型