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

Ion*_*tan 3 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;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想通过使用一些自动Eclipse重构来移动getModelCount方法ModelRepository,以便我在控制器中结束这个:

public class Controller {

  private ModelRepository repository;

  public int getModelCount() {
    repository.getModelCount();
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*Tom 5

我不认为有单跳重构,但你可以做到两个.

首先,突出显示getModelCount()方法的内容并执行a refactor->extract method,调用新方法countModels.

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

这将为您留下一个被ModelRepository调用的方法,countModels而不是getModelCount.为了完整起见,你可以做到refactor->rename这一点,但countModels无论如何我更喜欢.