4

如果我将 fore-each-template 用于以下值,则使用

  • foreCtrl+SpaceEnterEnter 在第 5 行
  • foreCtrl+SpaceEnterTabTabDownEnter在第 8 行
  • foreCtrl+SpaceEnterTabTabDownDownEnter在第 11 行

将生成以下代码(由 Eclipse 4.2 生成)

01  public static String[] c = new String[]{"hi"};
02  public static void test() {
03   String[] a = new String[]{"hi"};
04   int[] b = new int[]{2};
05   for (String string : a) {
06     // 1. fine
07   }
08   for (int i : b) {
09     // 2. fine too
10   }
11   for (iterable_type iterable_element : c) {
12     // 3. not resolved?
13   }
14 }

现在的问题:

  1. 为什么数组不能c解析它的数组类型和名称?
  2. 这可能是 Eclipse 中的错误吗?
4

1 回答 1

1

在模板中一段时间​​,

while (${condition:var(boolean)}) {
    ${line_selection}${cursor}
}

${condition:var(boolean)}确实匹配成员和静态成员。请注意, var 的内容辅助说:

${id:var(type[,type]*)} 评估为在当前范围内可见的字段、局部变量或参数,它是任何给定类型的子类型。如果未指定类型,则任何非原始变量都匹配。

在foreach的模板中,模板变量不同:

for (${iterable_type} ${iterable_element} : ${iterable}) {
    ${cursor}
}

${iterable}变量的文档状态:

可迭代(数组或 java.lang.Iterable)的提议

是否应提议(静态)成员并没有具体说明。

编辑:此文档页面指出

${iterable} 评估当前范围内可见的可迭代或数组的提案。

所以根据文档,这实际上可能是一个错误。这里其实已经报道过了。

于 2013-08-20T12:06:21.077 回答