Eclipse - Java模板 - 静态导入 - 模板变量''具有不兼容的类型

Beh*_*ehe 7 java eclipse

我想为JUnit4测试方法创建一个Java代码模板(Preferences - > Java - > Editor - > Templates),该方法还应该包含静态导入以使用一些hamcrest匹配器.

${:importStatic('org.hamcrest.MatcherAssert.*')}
${:import(org.junit.Test)}
@Test
public void ${testName}() throws Exception {    
    ${cursor} 
}
Run Code Online (Sandbox Code Playgroud)

我无法保存代码模板 - 显示错误消息:

模板变量''具有不兼容的类型.

它可以使用import语句正常工作,因此语法似乎是正确的.

如何将两个import语句组合在一起?

Sim*_*ven 10

这应该工作:

${imp:import(org.junit.Test)}
${impst:importStatic('org.hamcrest.MatcherAssert.*')}

@Test
public void ${testName}() throws Exception {    
    ${cursor} 
}
Run Code Online (Sandbox Code Playgroud)

编辑:如果我没记错的话,第一部分充当名称变量,第二部分是类型(import,var,...).例如,以下也不起作用

${:newType(org.eclipse.swt.widgets.ExpandItem)}
if (${:var(boolean)}) {
    ${cursor}
} else {

}
Run Code Online (Sandbox Code Playgroud)

你可以从我的答案中删除imp或impst,它仍然可以工作.在模板中,您可以对变量执行多个操作,一个很好的示例是List模板.

    ${type:newType(org.eclipse.swt.widgets.List)} ${list:newName(org.eclipse.swt.widgets.List)}= new ${type}(${parent:var(org.eclipse.swt.widgets.Composite)}, ${style:link('SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL', 'SWT.MULTI | SWT.V_SCROLL', SWT.MULTI, 'SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL', 'SWT.SINGLE | SWT.V_SCROLL', SWT.SINGLE)});
${list}.setLayoutData(new ${gridDataType:newType(org.eclipse.swt.layout.GridData)}(SWT.${horizontal:link(FILL, BEGINNING, CENTER, END)}, SWT.${vertical:link(FILL, TOP, CENTER, BOTTOM)}, ${hex:link(true, false)}, ${vex:link(true, false)}));
${list}.setItems(${word_selection}${});
${imp:import(org.eclipse.swt.SWT)}${cursor}
Run Code Online (Sandbox Code Playgroud)

他们在这里对list变量执行多个操作