代码之家  ›  专栏  ›  技术社区  ›  Grundlefleck anujkk

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

  •  34
  • Grundlefleck anujkk  · 技术社区  · 15 年前

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

    我有这样的代码(在外。Java):

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

    我正在寻找一种方法来选择内部,并让它转换为一个顶级类,在它自己的 .java 源文件。我知道使用复制/粘贴等手工操作很容易,但是内部类在很多地方都被引用,我希望重构选项在引用它的任何地方都能处理更改。

    我已经试过了 Refactor -> Extract Class... 但在一个叫做 data 我不太明白。

    Eclipse版本是3.5.1伽利略。

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


    编辑:不敢相信我忽视了这样做的选择。感谢你们所有正确的答案,+1给你们所有人。我仍然需要接受一个答案,所以如果有任何更有用的信息,例如脚本中的gotchas,仍然有留下答案的目的。

    6 回复  |  直到 6 年前
        1
  •  48
  •   Dathan    11 年前

    这太容易了,我不敢相信我错过了:

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

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

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

    更新

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

        2
  •  6
  •   Tom    9 年前

    为了完整性起见,Eclipse的4.x版已经更改了术语,现在他们将该操作称为“将类型移动到新文件…”。

    现在他们称这个行动为 Move Type to New File...

    Move type to new file

        3
  •  3
  •   Kelly S. French    15 年前

    提取类不是您想要的。

    我刚用Eclipse3.4.2做了这个

    1. 选择内部
    2. 右键单击“重构->将成员类型转换为顶级…”
        4
  •  2
  •   EJB    15 年前

    我有3.4.1,如果我右键单击inner,>refactor,我有“将成员类型转换为顶级…”选项,这完全符合您的需要。

        5
  •  2
  •   Klarth    15 年前

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

        6
  •  2
  •   liuzhengyang    6 年前

    对于IntellJ2018.1。

    1. 在内部类中单击鼠标右键
    2. 重构
    3. 移动
    4. 移到上层

    enter image description here

    enter image description here