如何在Eclipse中的任何位置获得"for循环"的内容辅助?

Jam*_* Fu 7 eclipse

在Eclipse中,在这样的行之后:

List list = new ArrayList();

在下面键入"for",然后键入"ctrl-space"(默认情况下),将带来几个选项,可以帮助完成这个"for循环": 助攻

但是如果变量"list"被声明远离此处(例如作为类字段),可能无法从此上下文直接推断,或者声明了许多列表,则协助不能正常工作:

不行 @@分界线---

在此输入图像描述

在某些情况下,Eclipse可以提供帮助,但只是不适用于成员变量.例如,手动输入"另一个"并在":"之后输入,并没有说服Eclipse猜测它....

(PS可行案例:

自动猜到了

自动猜到了

输入想要的名字,然后输入,效果很好

输入想要的名字,然后输入,效果很好)

在这种情况下,有没有人有任何提示让这种援助工作?

sum*_*ian 13

我跟随Ashutosh Jindal的提示,我设法配置了可行的模板(使用Kepler发布测试).这里是:

for (${iterable_type:elemType(iterable)} ${iterable_element:newName(iterable_type)} :  ${iterable:var(java.lang.Iterable)}) {
    ${cursor}
}
Run Code Online (Sandbox Code Playgroud)

重点是在模板定义中将localVar更改为var(Eclipse文档清楚地解释了这一点).

如何使用它:

  1. 打印模板名称(foreach为默认模板),然后按Enter键.该模板将与Eclipse选择的默认集合一起使用(声明的最新集合)
  2. 点击两次TAB跳转到收集元素.您将获得所有可应用的可迭代集合的下拉列表.
  3. 使用向上/向下箭头选择所需的集合,按Enter键.Eclipse将调整元素类型和名称(非常酷).

单击截图

这几乎和Intellij模板一样好用.缺点是:

  • 模板不包含数组(与默认的foreach模板相对).对于数组,您必须定义另一个模板.


Ash*_*dal 5

我自己没试过,但看看代码模板定义.例如,foreach代码模板在Preferences - > Java - > Editor - > Templates中定义,如下所示:

foreach的定义

定义如下:

for (${iterable_type} ${iterable_element} : ${iterable}) {
    ${cursor}
}
Run Code Online (Sandbox Code Playgroud)

注意正在使用的变量,例如iterable_type.

现在来看看这个 Eclipse帮助页面.

这里有一个变量${id:localVar(type[,type]*)},描述如下:

Evaluates to a local variable or parameter visible in the current scope that is a subtype of any of the given type. If no type is specified, any non-primitive local variable matches.
${array} is a shortcut for ${array:localVar(java.lang.Object[])}, but also matches arrays of primitive types.
${collection} is a shortcut for ${collection:localVar(java.util.Collection)}.
${iterable} is a shortcut for ${iterable:localVar(java.lang.Iterable)}, but also matches arrays. 
Run Code Online (Sandbox Code Playgroud)

截图相同:

变量

我相信如果你想增加foreach模板推断变量的范围,你可能需要用适当的变量编辑模板定义.

如果这有帮助,请告诉我.不幸的是,我还没有深入研究代码模板,因此无法给出一个具体的例子.


Ged*_*ius 4

我通常使用 for 循环来解决内容辅助问题,如下所示: