2010-08-19 47 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