Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse重构:在collaborator中移动方法_Java_Eclipse_Refactoring_Automated Refactoring - Fatal编程技术网

Java Eclipse重构:在collaborator中移动方法

Java Eclipse重构:在collaborator中移动方法,java,eclipse,refactoring,automated-refactoring,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()) {

我有以下情况:

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 Indigo中可能吗?如果是,如何进行?谢谢

我不认为存在单跳重构,但可以分两步进行

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

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


这将为您在
ModelRepository
上留下一个名为
countModels
的方法,而不是
getModelCount
。为了完整性,你可以在这个问题上做一个
重构->重命名
,但我还是更喜欢
countModels

谢谢你的回答。似乎
refactor->move
操作直接作用于该方法。我的问题是
repository
字段的类型是接口,而不是类。这就是Eclipse在移动它时遇到问题的原因。
public class Controller {

  private ModelRepository repository;

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