我正在尝试编写一个 Eclipse 模板来生成两个名称不冲突的变量。
当我以相同的方法使用模板两次时,第二个matcherVar
与第一个具有相同的名称,matcherVar
从而产生了我试图避免的命名冲突。
输出错误:
Pattern patternVar = Pattern.compile(patternString);
Matcher matcherVar = patternVar.matcher(matcherString); // correct matcherVar
Pattern patternVar0 = Pattern.compile(patternString);
Matcher matcherVar = pattern.matcher(matcherString); // wrong, instead: matcherVar0
如您所见,我错误地生成了两次运行模板的冲突名称。
当前模板:(已添加换行符和注释以提高可读性)
${:include(java.util.regex.Pattern, java.util.regex.Matcher)}
// compile Pattern object with patternString
${pattern_type:newType(java.util.regex.Pattern)}
${patternVar:newName(pattern_type)}
= ${pattern_type.compile(${patternString:var(String)});
// create Matcher object from the Pattern and matchingString
${matcher_type:newType(java.util.regex.Matcher)}
${matcherVar:newName(matcher_type)} // <------------------------- **wrong**
= ${patternVar}.matcher(${matchingString:var(String)});
注意:奇怪的是,在同一方法中运行模板 3 次或更多次后,生成的名称并不冲突,因此这可能是 Eclipse 的错误。