2011-08-29 37 views
3

招法,我有以下情況:Eclipse的重構:內部合作者

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中這可能嗎?如果是,如何?謝謝!

回答

5

我不認爲有單跳重構,但你可以在兩個。

首先,突出顯示getModelCount()方法的內容並執行refactor->extract method,調用類似countModels的新方法。

其次,在新countModels()方法做一個refactor->move,選擇所述repository字段爲目的地。

這將離開你的ModelRepository的方法稱爲countModels而非getModelCount。爲了完整起見,你可以在這個上做一個refactor->rename,但我更喜歡countModels

+0

感謝您的回答。看起來'refactor-> move'操作直接在那個方法上工作。我的問題是'repository'字段的類型是一個接口,而不是一個類。這就是爲什麼Eclipse有問題移動它。 –