【问题标题】:Can eclipse extract a second class in class file to its own fileeclipse可以将类文件中的第二个类提取到自己的文件中吗
【发布时间】:2010-09-11 00:23:31
【问题描述】:

我经常首先通过在我正在处理的类中创建一个内部类来重构代码——当我完成后,我将整个东西移动到一个新的类文件中。这使得将代码重构到新类中非常容易,因为 A)我只处理一个文件,并且 B)我不会创建新文件,直到我对名称/名称有一个很好的了解(有时它会结束作为一个以上的类)。

Eclipse 有什么办法可以帮助我完成最后一步吗?我应该能够告诉它我想要类在哪个包中,它可以从类名中找出文件名,从包中找出目录。

这似乎是一个微不足道的重构,而且非常明显,但我无法弄清楚击键/手势/任何实现它的方法。我尝试过拖动、菜单、上下文菜单和浏览键盘快捷键。

有人认识这个吗?

[编辑] 这些已经是这个文件中的“顶级”类,而不是内部类,并且“移动”似乎不想为我创建一个新类。这是我通常做的艰难的方式——包括出去,创建一个空班,回来和搬家。我想一步完成整个事情。

【问题讨论】:

    标签: java eclipse refactoring


    【解决方案1】:

    对不起,我之前给出了错误的答案。我重新检查了,它并没有完全想要你想要的。不过,我确实在 3.4 中为您找到了解决方案。

    突出显示该类,复制 CTRL-C 或剪切 CTRL-X,单击您希望该类进入的包,然后粘贴,CTRL-V。 Eclipse 会自动为你生成类。

    将成员类型转换为顶级并不完全有效。这样做会创建一个外部类的字段,并生成一个以外部类为参数的构造函数。

    【讨论】:

    • 如此接近。这正是我想要的,但是当我这样做时,粘贴在包中是灰色的。我想知道我的eclipse版本是否太旧。 3.3.1.1?
    • 我刚刚在 3.3 中对其进行了测试,它确实有效。嗯...也许您错过了复制课程行?
    • 知道了!仅适用于 Package Explorer,不适用于 Navigator。非常感谢!
    • 如果您要转换静态内部类,则将成员类型转换为顶级会按预期工作。否则,Eclipse 无法确定您不需要外部实例。
    【解决方案2】:

    在 Eclipse 3.6 中,您可以:重构 -> 将类型移动到新文件

    【讨论】:

    • +1 这正是我想要的!我搜索过“eclipse extract inner class into external class”,这是出现的第一个问题,这就是我需要的确切答案。谢谢!
    【解决方案3】:

    右键单击类名(在源代码中)并选择 Refactor -> Convert Member Type to Top Level。但是,它不允许您选择包。

    【讨论】:

      【解决方案4】:

      对于 IntelliJ IDEA / Android Studio: 重构 -> 移动 -> 将内部类 MyInnerClass 移动到上层

      【讨论】:

        【解决方案5】:

        可以在 2 次重构中完成:

        1. 将成员类型转换为顶级

        2. 移动

        【讨论】:

          猜你喜欢
          • 2016-08-16
          • 1970-01-01
          • 1970-01-01
          • 2012-06-07
          • 2020-10-24
          • 1970-01-01
          • 2019-03-12
          • 2014-07-25
          • 1970-01-01
          相关资源
          最近更新 更多