我无法为以下场景找到正确的重构选项:
我有这样的代码(在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。我仍然需要接受答案,所以如果有更多有用的信息,例如有了脚本的问题,仍然有一个回答的目的。
答案 0 :(得分:48)
这很容易我不敢相信我错过了它:
将光标置于内部类型的任何位置,右键单击并选择:
Refactor -> Convert Member Type to Top Level...
(默认设置中没有快捷方式)
这会自动提取内部类型,并将其放在自己的文件中,与外部类型位于同一个包和目录中。
<强>更新强>
在Eclipse的更高版本中,此重构已重命名为“将类型移动到新文件”
答案 1 :(得分:6)
为了完整性,Eclipse的4.x版已更改术语,现在他们将该操作称为Move Type to New File...
答案 2 :(得分:3)
Extract Class不是你想要的。
我刚刚使用Eclipse 3.4.2
完成了这项工作答案 3 :(得分:3)
答案 4 :(得分:2)
我有3.4.1,如果我右键单击Inner,&gt;重构,我有“隐蔽成员类型到顶级...”选项,这正是您想要的。
答案 5 :(得分:2)
使用重构 - &gt; 将会员转换为顶级类型