我有以下情况:
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有可能吗?如果有,怎么样?谢谢!
答案 0 :(得分:5)
我不认为有单跳重构,但你可以用两个。
首先,突出显示getModelCount()
方法的内容并执行refactor->extract method
,将新方法称为countModels
。
其次,对新的refactor->move
方法执行countModels()
,选择repository
字段作为目标。
这会在名为ModelRepository
而不是countModels
的{{1}}上留下一个方法。为了完整起见,您可以对此进行getModelCount
,但无论如何我更喜欢refactor->rename
。