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

标签 java eclipse

我想为 JUnit4 测试方法创建一个 Java 代码模板(首选项 -> Java -> 编辑器 -> 模板),该方法还应包含静态导入以使用一些 hamcrest 匹配器。

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

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

Template variable '' has incompatible types.

它与任一 import 语句都可以正常工作,因此语法似乎是正确的。

如何组合这两个导入语句一起工作?

最佳答案

这应该有效:

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

@Test
public void ${testName}() throws Exception {    
    ${cursor} 
}

编辑:如果我没记错的话,第一部分充当名称变量,第二部分是类型(import、var、...)。 例如下面的也行不通

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

}

您可以从我的回答中删除 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}

这里他们对列表变量执行多项操作

关于java - Eclipse - Java 模板 - 静态导入 - 模板变量 '' 具有不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18142972/

相关文章:

java - for each 循环如何防止空列表?

eclipse - 如何在 eclipse 中将 ReactJs 与 Spring MVC 集成

eclipse - 在eclipse中从模板自动生成ant文件

java - roughike Bottombar 无法解析方法“attach”

java - 从用户 java 读取一行文本

java - 在接口(interface)中创建两个通用参数

java - Play Framework 2.4 docker镜像运行错误

javafx fxml LoadException

java - 需要从 eclipse 插件的本地调试更改为 vm 中的远程调试

java - 在 Visio 中从 Java 代码创建 UML 图