Eclipse中的“模板” - 模板:foreach

时间:2010-02-28 13:09:14

标签: eclipse templates loops foreach

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

我知道Eclipse与foreach模板做了类似的事情,它猜测要迭代哪个变量,但是我不能用选定的变量来做同样的事情。但是,如果变量不在当前范围内,如果Eclipse猜错了怎么办?

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

选择:

functionWhichReturnsList()   (which returns List<TypeOfItemsInList>)

结果:

for (TypeOfItemsInList item : functionWhichReturnsList()) {  
   ${cursor}  
}

有什么想法吗?

4 个答案:

答案 0 :(得分:8)

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

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

List<TypeOfItemsInList> list = functionWhichReturnsList()

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

List<TypeOfItemsInList> list = functionWhichReturnsList()

for (TypeOfItemsInList item : list) {
}

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

来内联局部变量
for (TypeOfItemsInList item : functionWhichReturnsList()) {
}

这不是最佳选择,但可行。

答案 1 :(得分:8)

更新2

在Eclipse 4.4 What's New in Luna (JDT)中,为此问题添加了QuickFix。这也可以用于数组,集合和映射(键集和值)。

enter image description here

更新1

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

enter image description here

此外,该插件提供了更多有用的比赛:)

对于4.4之前的Eclipse:

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

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

for (iterable_type iterable_element : iterable) {

}

然后我对iterable执行双击并将其替换为方法:

for (iterable_type iterable_element : functionWhichReturnsList()) {

}

下一步只需点击functionWhichReturnsList()然后按Ctrl-1即可。 Eclipse会建议将类型iterable_element更改为TypeOfItemsInList。这是希望你到最后:

for (TypeOfItemsInList iterable_element : functionWhichReturnsList()) {

}

现在,您只需找到iterable_element的正确名称即可。只需双击它即可开始输入。

答案 2 :(得分:0)

据我所知,Eclipse不会以你描述的方式支持它。

如果Eclipse找不到正确的变量,您可以使用制表符键迭代foreach模板中的占位符。在可迭代点,eclipse将向您显示可供选择的可迭代列表。

答案 3 :(得分:0)

您可能无法在eclipse中执行此操作,但键入for并按Ctrl-Space两次,您将看到弹出的代码模板菜单。然后你可以在适当的位置选择functionWhichReturnsList(),eclipse将完成其余的工作。