Eclipse重构:在协作者中移动方法

时间:2011-08-29 08:37:08

标签: java eclipse refactoring automated-refactoring

我有以下情况:

public class Controller {

  private ModelRepository repository;

  public int getModelCount() {
    int count = 0;
    List<Model> models = repository.getModels();

    for (Model model : models) {
      if (model.somePredicate()) {
        count++;
      }
    }

    return count;
  }
}

现在,我想通过使用一些自动Eclipse重构来移动getModelCount方法ModelRepository,这样我最终会在控制器中使用它:

public class Controller {

  private ModelRepository repository;

  public int getModelCount() {
    repository.getModelCount();
  }
}

Eclipse Indigo有可能吗?如果有,怎么样?谢谢!

1 个答案:

答案 0 :(得分:5)

我不认为有单跳重构,但你可以用两个。

首先,突出显示getModelCount()方法的内容并执行refactor->extract method,将新方法称为countModels

其次,对新的refactor->move方法执行countModels(),选择repository字段作为目标。

这会在名为ModelRepository而不是countModels的{​​{1}}上留下一个方法。为了完整起见,您可以对此进行getModelCount,但无论如何我更喜欢refactor->rename