【问题标题】:Eclipse template for wrapping an iterable selection in a for each loop用于在每个循环中包装可迭代选择的 Eclipse 模板
【发布时间】:2010-08-19 16:08:30
【问题描述】:

我想选择一个 Iterable,按 Alt+Shift+Z 以获取“Surround With”上下文菜单,并显示一个 foreachwrap 模板,该模板将以适当的格式将所选内容包装在每个循环中。

比如我要选择

someObject.getSomeList()

并生成这个

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

}

我尝试过类似的方法,但它似乎不起作用:

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

【问题讨论】:

  • 我去看看。或者,您可以键入“foreach”,按 Ctrl-Space,然后选择“foreach - 遍历数组或 Iterable”提案,它将使用最后引用的 Iterable 或数组变量从“foreach”模板生成代码.
  • 我建议您将其发布在stackoverflow.com/questions/1028858/… 下以避免重复。至于这个问题,我有点半信半疑。通用类型信息不保留在字节码中,缺少这些信息会阻碍解决方案。我真的很想看到答案!
  • @questzen 泛型类型信息(至少对于类和方法签名)保留在字节码中,否则 Java 编译器无法使用它。但是,在运行时不使用通用信息。
  • 我同意拉德斯坦的观点。这个模板已经存在于 eclipse 中,如果你想使用集合而不是最新的,那么只需先编写你的语句,即 someObject.getSomeList() 然后通过键入“foreach”并按 Ctrl+Space 来使用 foreach 模板。

标签: java eclipse


【解决方案1】:

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

您可以通过以下方法获得所需的行为:

  1. 编写返回可迭代集合的语句,例如

    someObject.getSomeList()
    
  2. Ctrl+1(Mac 上为Cmd+1)并选择Assign statement to a new local variable(此操作甚至可以直接组合(Mac 上为 Cmd+2 L),但是,如果您想使用它,这可能取决于你想记住多少不同的组合)

  3. 写不超过

    fore
    

    然后再次按Ctrl+1 (Cmd+1),然后选择Iterate over an array or iterable(此时通常在出现快速修复菜单后立即按 Enter 就足够了),您会得到如下信息:

    for (Content content : someList) {
    
    }
    

您现在甚至可以内联使用局部变量来再次摆脱它(当然使用 QuickFix ;)。 QuickFix 真的很强大,自从该功能发布以来,我几乎没有使用过任何模板。

【讨论】:

  • 是的,这就是我现在所做的。希望有更好的东西。估计没有。
猜你喜欢
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 2020-02-03
  • 2011-11-05
  • 1970-01-01
  • 2016-05-10
相关资源
最近更新 更多