我在Java中的foreach循環(這裏的簡化版本)重構的foreach用於循環
List<String> names = getNames();
for(String name:names) {
doSomething(name);
}
有沒有重構這對傳統的for
循環自動化的方式?
我知道該怎麼做手工
List<String> names = getNames();
for(int i=0; i<names.size(); i++) {
String name = names.get(i);
doSomething(name);
}
正如你所看到的,有一點需要打字的for
語句本身以及再次引入變量name
併爲其分配值names.get(i)
。總的來說,手動編輯對我來說太容易出錯。
爲什麼我要這樣做?我必須修復一個錯誤,修復方法是從索引1開始,而不是從索引0開始,到索引n-1而不是結束(不幸的是我無法立即修復輸入,我需要等待庫更新如果這被認爲是一個錯誤)。
我試過了什麼?我右鍵單擊了for
關鍵字並單擊了「Refactor」,但就我從上下文菜單條目中獲得的內容而言,沒有任何內容會爲我完成這項工作。
爲什麼我認爲這在理論上可行?因爲Visual Studio(C#)的Resharper中存在類似的功能。
FYI:我使用Eclipse月神SR 2(4.4.2)
是否有可能引入新的方法,而不是「getNames」返回列表中沒有第一和最後的項目? –
@DevBlanked:當然這在技術上是可能的,但是這並不意味着我手動編寫了一個循環來複制除第一個和最後一個項目以外的所有內容? –
不是真的,您可以刪除提供其索引的第一個和最後一個項目,https://docs.oracle.com/javase/7/docs/api/java/util/List.html#remove(int)。 –