如何使用eclipse模板自动插入类表示法?

时间:2010-04-19 14:05:35

标签: java eclipse code-generation eclipse-templates

有人知道如何使用eclipse模板在类签名上方插入“@RunWith anotation”吗?

例:

@RunWith(Parameterized.class)
public class MyClassTest {
...
    @Parameters
    public static Collection<Object[]> parameters() {
        List<Object[]> list = new ArrayList<Object[]>();
        list.add(new Object[] { "mind!", "find!" });
        list.add(new Object[] { "misunderstood", "understood" });
        return list;
    }
...
}

__

模板:

// TODO: move this '@RunWith(Parameterized.class)' to class anotation
    @Parameters
    public static Collection<Object[]> parameters() {
        ${type:elemType(collection)}<Object[]> parametersList = new ${type:elemType(collection)}<Object[]>();
        ${cursor}// TODO: populate collection
        return parametersList;
    }

__感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

不幸的是,您无法使用Eclipse模板向现有的封闭类添加注释(至少,我不知道)。但是,有一种解决方法。以下是模板的修改版本:

@${runnerType:newType(org.junit.runner.RunWith)}(${paramterizedType:newType(org.junit.runners.Parameterized)}.class)
public class ${primary_type_name} {
    @${parametersType:newType(org.junit.runners.Parameterized.Parameters)}
    public static ${collectionType:newType(java.util.Collection)}<Object[]> parameters() {
        ${baseCollectionType}<Object[]> parametersList = new ${concreteCollectionType}<Object[]>();
        ${cursor}// TODO: populate collection
        return parametersList;
    }
}

使用模板(假设其名称为“参数化”):

  1. 在Eclipse中创建一个新类
  2. 在执行任何其他操作之前,请选择存根类声明,包括开始和结束括号。
  3. 键入模板的名称,然后按Cntrl+Space激活模板(您可能必须从模板列表中选择模板。我只有一个名为Parameterized的模板,因此Eclipse只是自动使用它我)。
  4. 类定义将替换为包含@RunWith注释的定义。我使用 $ { id :newName(reference)} 模板变量来使Eclipse自动添加所有必需的导入({{1的导入除外) }和${baseCollectionType},你必须手动添加这些...谢天谢地${concreteCollectionType}

    这很难描述。你必须尝试它才能确切地了解它是如何工作的。如果需要澄清我的说明,请发表评论。