自定义eclipse模板让setter返回这个对象?

时间:2011-02-11 04:22:01

标签: java eclipse templates

我需要自定义eclipse setter模板来返回这个对象,比如这个

public Person setName(String name){
    this.name=name;
    return this;
}

但Java-> Code Style->模板只允许我自定义setter body部分,而不是方法定义。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:6)

我担心我无法提供允许您为此修改Eclipse模板的解决方案,但是我可以建议您重新考虑您在此处所做的事情吗?

如果您检查JavaBeans spec,您会看到当您以这种方式定义方法时,它们不再是有效的属性设置器。 Setter应该有void返回类型;从长远来看,你可能会后悔创建这些非标准的bean。例如,尝试使用java.beans.Introspector为您的班级收集bean信息,您会看到找不到您的媒体“设置者”。

我知道能够使用链式调用快速初始化您的bean是很好的:

new Person().setName("John Smith").setDateOfBirth(...).setAddress(...)

我可以建议您使用标准setter(返回void)作为替代方案,而是引入构建器方法,如:

public Person withName(String name) {
    this.setName(name);
    return this;
}

您的快速单线构造如下:

new Person().withName("John Smith").withDateOfBirth(...).withAddress(...)

我发现'with'前缀也很好。

答案 1 :(得分:4)

您可以使用Fast Code Eclipse Plugin轻松完成此操作。

答案 2 :(得分:0)

据我所知,你所能做的就是用Java编辑“Window-> Preferences-> Java-> Code Style-> Code-> Setter body”模板:

${field} = ${param};
return this;

虽然这不会自动为你设置返回类型,但Eclipse会为你的每一个setter抛出一个红色波浪形,你可以将鼠标悬停在上面并选择“将方法返回类型更改为'yourTypeHere'”。 / p>