eclipse可以将方法转换/重构为类吗?

时间:2010-08-02 12:51:24

标签: java eclipse class refactoring methods

这似乎应该是相当直接的,但我看不出任何明显的东西。我基本上想要做的是指向一个方法并重构 - >提取类。这会将该方法作为顶级公共API使用该方法的新类。重构还会将所有必需的方法和变量与它一起拖到新类中,如果旧类中没有其他内容正在使用它,则将它们从旧类中删除。

这是我在重构遗留代码时经常遇到的重复性任务。无论如何,我目前正在使用Eclipse 3.0.2,但如果它在更新版本的eclipse中可用,它仍然会对答案感兴趣。谢谢!

4 个答案:

答案 0 :(得分:10)

我认为这种重构还不存在。

Bug 225716 已记录此类功能(自2008年初开始)。
Bug 312347 也可以很好地实现这种重构。

  

“创建一个新类并将相关字段和方法从旧类移动到新类中。”

我在此SO answer中提到了一种解决方法。

答案 1 :(得分:7)

在Eclipse 3.7.1中,有一个选项可以将方法和字段移出类。为此:

  1. 确保目标类存在(空类很好,只要它在项目中存在)。
  2. 在源类中,选择要删除的方法(大纲视图对此非常有用),右键单击选择,然后选择“移动”
  3. 在下拉菜单/浏览
  4. 中选择目标类别

    现在提取您的成员。修复任何可见性问题(来源>生成Getters和Setter对此非常有用)并且您已经完成了设置。

答案 2 :(得分:3)

  

这似乎应该是公平的   直线前进...

实际上,Extract Class是一个比较困难的重构。即使在移动单个方法及其依赖项的简单示例中,也存在一些并发症:

  1. 如果移动的方法可能在您不知道的代码中使用,则需要在原始类中使用代理方法,该方法将委托(调用)移动的方法。 (如果您的应用程序是自包含的,或者如果您知道移动方法的所有客户端,则重构代码可以更新调用代码。)
  2. 如果移动的方法是接口的一部分,或者移动的方法是继承的,那么您还需要一个“代理方法”。
  3. 您的方法可能会调用其他方法调用的私有方法/字段。您需要为被调用成员选择一个类(可能在使用它的类中)。您需要将访问权限从“私人”更改为更通用的内容。
  4. 根据原始类和提取的类需要彼此了解的数量,一个或两个可能需要初始化指向另一个的字段。
  5. 这就是为什么我鼓励所有人投票支持错误312347来修复。

答案 3 :(得分:1)

您是否尝试过Move群组的Refactor功能?您可以创建帮助程序类并移动到任何您想要的位置。