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