4

有太多时间我遇到需要为列表编写加法器/删除器方法:

public void addSomething(Something something){
    somethings.add(something);
}

public void removeSomething(Something something){
    somethings.remove(something);
}

如果我做对了,那么 Eclipse 模板可以支持自动完成......例如,如果我有:

Vector<Something> somethings=new Vector<Something>();

我希望模板将该方法添加到 Eclipse 的自动完成中,并自动完成整个方法:

public void addSomething(Something something){
    somethings.add(something);
}

当我输入“添加”+(Ctrl + Space)...

任何想法如何完成这样的事情......也许指向我特定于这类主题的阅读材料。

** 更新 **

好吧,这就是我到目前为止所拥有的:

public final void add${type:elemType(collection)}(${type} ${varName:newName(type)}) {
    ${collection}.add(${varName}); 
}

不过,这是问题所在,如果我输入“add”+(Ctrl + Space):

在类级别,集合被声明为一个字段,我得到一个空变量作为集合。

public final void addtype(type type) {
    collection.add(type);
}

在方法级别,集合被声明为一个字段,我得到一个空变量作为集合。

public final void addtype(type type) {
    collection.add(type);
}

在方法级别,集合引用是方法的局部变量,我得到了正确的语法,但 add 方法在另一个方法内部。

public void method(...) {
    public final void addSomething(Something something) {
        this.somethings.add(something);
    }
}

这意味着我没有获得现场级别的参考,我怎样才能获得它?

** 更新 2 **

这也给出了相同的结果:

public final void add${type:elemType(collection)}(${type} ${varName:newName(type)}) {
    ${collection:field(java.util.Collection)}.add(${varName}); 
}

public final void remove${type:elemType(collection)}(${type} ${varName:newName(type)}) {
    ${collection:field(java.util.Collection)}.remove(${varName}); 
}

谢谢,

亚当。

4

3 回答 3

2

您可以在Eclipse 帮助中了解可用的模板变量。您应该根据 Eclipse 中的现有模板制作模板,请参阅 Eclipse 中的“模板视图”。

于 2012-03-07T03:47:42.300 回答
2

我建议您使用Source > Generate delegate methods,因此您不必为要生成的每种方法编写模板。

为 指定一个热键Generate delegate methods,每当你声明一个对象时

List<Integer> integer = new ArrayList<Integer>();| <- your cursor

按下热键,Eclipse 将检测当前选定的对象,然后为您提供可用方法列表。

于 2012-03-07T09:15:20.283 回答
2

我终于使用了以下内容:

public final void add${type:elemType(collection)}(${type} ${varName:newName(type)}) {
    ${collection:field(java.util.Collection)}.add(${varName}); 
}

public final void remove${type:elemType(collection)}(${type} ${varName:newName(type)}) {
    ${collection:field(java.util.Collection)}.remove(${varName}); 
}

我在一个方法中创建它,并将它削减到类级别...... :)

于 2012-05-19T23:10:24.590 回答