Eclipse中的"模板" - 模板:foreach

Cas*_*per 9 eclipse foreach templates loops

我是Eclipse的新手,我主要用于Java.我之前使用过IntelliJ Idea,它可以选择一个扩展Iteratable(Collection,List等)的变量,并生成一个正确的foreach循环.

我知道Eclipse使用foreach模板执行类似的操作,它会猜测要迭代的变量,但我无法使用所选变量将其与同一个变量相同.但是,如果变量不在当前范围内,如果Eclipse猜错了怎么办?

所以我想要做的是能够选择一个变量(或返回变量的函数)来实现Iterator并让它返回:

选择:

functionWhichReturnsList()   (which returns List<TypeOfItemsInList>)
Run Code Online (Sandbox Code Playgroud)

结果:

for (TypeOfItemsInList item : functionWhichReturnsList()) {  
   ${cursor}  
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Chr*_*isH 8

我通常按​​照以下步骤创建这样的代码:

调用该函数并使用Ctrl-1创建一个包含返回值的局部变量:

List<TypeOfItemsInList> list = functionWhichReturnsList()
Run Code Online (Sandbox Code Playgroud)

键入fore [Ctrl-space]以插入for循环(因为eclipse通常在构造循环时选择最接近的iterable):

List<TypeOfItemsInList> list = functionWhichReturnsList()

for (TypeOfItemsInList item : list) {
}
Run Code Online (Sandbox Code Playgroud)

通过将光标放在列表变量上并键入Alt + Shift + I来内联局部变量:

for (TypeOfItemsInList item : functionWhichReturnsList()) {
}
Run Code Online (Sandbox Code Playgroud)

它不是最佳的,但它的工作原理.


kon*_*kon 8

更新2:

在Eclipse 4.4 Luna(JDT)的新功能中,为此问题添加了QuickFix.这也可以用于数组,集合和映射(键集和值).

在此输入图像描述

更新1

我最近发现了一个提供后缀代码完成的eclipse插件(https://github.com/trylimits/Eclipse-Postfix-Code-Completion).这是它对foreach循环的工作原理:

在此输入图像描述

此外,该插件提供更有帮助的比赛:)

对于4.4之前的Eclipse:

我也有同样的问题,但我无法找到解决方案.所以,目前我执行以下步骤来获得所需的循环.

在[Ctrl-space]中选择foreach模板,我得到以下内容:

for (iterable_type iterable_element : iterable) {

}
Run Code Online (Sandbox Code Playgroud)

然后我执行双击iterable并用方法替换它:

for (iterable_type iterable_element : functionWhichReturnsList()) {

}
Run Code Online (Sandbox Code Playgroud)

在下一步,只需单击functionWhichReturnsList()并按Ctrl-1.Eclipse将建议将类型更改iterable_elementTypeOfItemsInList.这是希望你到最后:

for (TypeOfItemsInList iterable_element : functionWhichReturnsList()) {

}
Run Code Online (Sandbox Code Playgroud)

现在,您只需要找到一个合适的名称iterable_element.只需双击它即可开始输入.