在Eclipse中,在这样的行之后:
List list = new ArrayList();
在下面输入“for”,然后在“ctrl-space”(默认情况下)后面输入,将带来几个选项,可以帮助完成这个“for循环”:
但是如果变量“list”被声明远离此处(例如作为类字段),可能无法从此上下文直接推断,或者声明了许多列表,那么辅助效果不佳:
@@分界线---
在某些情况下,Eclipse可以提供帮助,但只是不适用于成员变量。例如。在“:”之后手动输入“another”和ENTER,并没有说服Eclipse猜测它....
(P.S。可行案例:
自动猜测
输入想要的名字,然后输入,效果很好
)
在这种情况下,有没有人有任何提示让这种帮助有效?
答案 0 :(得分:13)
我跟随Ashutosh Jindal的提示,我设法配置了可行的模板(使用Kepler发布测试)。这是:
for (${iterable_type:elemType(iterable)} ${iterable_element:newName(iterable_type)} : ${iterable:var(java.lang.Iterable)}) {
${cursor}
}
主要是在模板定义中将 localVar 更改为 var (Eclipse docs清楚地解释了这一点。)
如何使用它:
这几乎和Intellij模板一样好用。缺点是:
答案 1 :(得分:5)
我自己没有尝试过,但请看一下代码模板定义。例如,foreach
代码模板在首选项 - >中定义。 Java - >编辑 - >模板如下:
定义如下:
for (${iterable_type} ${iterable_element} : ${iterable}) {
${cursor}
}
请注意正在使用的变量,例如iterable_type
。
现在看一下 this 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.
相同的截图:
我相信如果你想增加foreach
模板推断变量的范围,你可能需要用适当的变量编辑模板定义。
如果这有帮助,请告诉我。不幸的是,我没有深入研究代码模板,因此无法给出具体的例子。
答案 2 :(得分:4)
我通常使用for循环来解决内容辅助的问题如下:
通过键入远远超过上面声明的集合变量和分号来创建局部变量:
list;
按Ctrl + 2 L
Eclipse生成一个新的局部变量声明,如下所示:
List list2 = list;
使用Ctrl +空格键入我的foreach和autocomplete,得到以下内容:
List list2 = list;
for (Object object : list2) {
}
将光标放在for循环声明中的list2上,然后按Alt + Shift + I代表内联变量。
这会导致您想要实现的目标。经过一些练习后,努力很少:
for (Object object : list) {
}
答案 3 :(得分:0)