![](/img/trans.png)
[英]How to refactor a top-level class or interface to an inner one in Eclipse?
[英]How to refactor a static inner class to a top level class in Eclipse?
我无法为以下场景找到正确的重构选项:
我有这样的代码(在Outer.java中):
public class Outer {
// ... class stuff
public static class Inner {
// ... inner class stuff
}
}
我正在寻找一种方法来选择Inner,并将其转换为顶级类,在它自己的.java
源文件中。 我知道这很容易用复制/粘贴等手动完成,但内部类在很多地方被引用,我希望refactor选项能够处理引用它的每个地方的变化。
我已经尝试过选项Refactor -> Extract Class...
但这对于一个我不太了解的称为data
的字段做了一些奇怪的事情。
Eclipse版本是3.5.1 Galileo。
如何将静态内部类重构为顶级类?
编辑:不敢相信我忽略了这样做的选择。 感谢您的所有正确答案,给大家+1。 我仍然需要接受一个答案,所以如果有更多有用的信息,例如与脚本有关,那么仍然有一个留下答案的目的。
这很容易我不敢相信我错过了它:
将光标放在内部类型的任何位置,右键单击并选择:
Refactor -> Convert Member Type to Top Level...
(默认设置中没有快捷方式)
这会自动提取内部类型,并将其放在自己的文件中,与外部类型位于同一个包和目录中。
更新
在Eclipse的更高版本中,此重构已重命名为“将类型移动到新文件”
为了完整起见,Eclipse的4.x版已更改术语,现在他们将该操作称为Move Type to New File...
Extract Class不是你想要的。
我只是使用Eclipse 3.4.2做到了这一点
我有3.4.1,如果我右键单击Inner,> refactor,我有选项“Covert member Type to top level ..”,这正是你想要的。
使用重构 - > 将成员转换为顶级类型
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.