2010-08-19 33 views
13

我想選擇一個Iterable,按Alt + Shift + Z以獲得「Surround With」上下文菜單,並顯示一個foreachwrap模板,爲每個循環使用適當的格式。用於在每個循環中爲循環選擇打包的Eclipse模板

例如,我要選擇

someObject.getSomeList() 

,並生成該

for (SomeListType someListType : someObject.getSomeList()) { 

} 

我已經試過這樣的事情,但它似乎並沒有工作:

for(${t:elemType(ls)} ${:name(t)} : ${ls:line_selection}) 
{ 
    ${cursor} 
} 
+6

我要檢查一下。或者,您可以鍵入「foreach」,按下Ctrl-Space,然後選擇「foreach - 迭代數組或迭代」提議,並使用最後引用的Iterable或數組變量從「foreach」模板生成代碼。 – Ladlestein 2010-08-19 18:01:57

+0

我建議你發佈這個http://stackoverflow.com/questions/1028858/useful-eclipse-java-code-templates避免重複。至於這個問題,我有點可疑。通用類型信息不保留在字節碼中,缺少這些信息會阻礙解決方案。我真的很好奇看到答案! – questzen 2010-08-20 06:11:10

+0

@questzen通用類型信息(至少對於類和方法簽名)被保留在字節碼中,否則Java編譯器不能使用它。儘管如此,通用信息並未在運行時使用。 – 2011-02-26 12:08:54

回答

5

使用QuickFix(Win/Lin上的Ctrl+1或Mac上的Cmd+1)。

你可以用以下方法所需的行爲:

  1. 編寫返回的迭代集合的聲明,例如

    someObject.getSomeList() 
    
  2. Ctrl+1Cmd+1在Mac上),然後選擇Assign statement to a new local variable(,甚至有這個動作(加利福尼亞+ 2升在Mac上)直接結合,但是如果你想使用它,它可能取決於你想多少不同的組合來記住)

  3. 寫不超過

    fore 
    

    並按Ctrl+1Cmd+1)再次,然後選擇Iterate over an array or iterable(只需按下回車後立即入quickfix菜單出現通常是不夠的,在這一點上),你會得到這樣的事情:

    for (Content content : someList) { 
    
    } 
    

現在,您甚至可以內聯局部變量的使用擺脫它再次(當然使用QuickFix;)。 QuickFix功能非常強大,我從未使用任何模板,因爲該功能已發佈。

+0

是的,這就是我現在所做的。希望有更好的東西。猜猜沒有。 – 2011-03-10 06:50:39