【发布时间】:2011-02-11 04:22:00
【问题描述】:
我需要自定义 eclipse setter 模板来返回这个对象,像这样
public Person setName(String name){
this.name=name;
return this;
}
但是 Java->Code Style->Templates 只允许我自定义 setter 正文部分,而不是方法定义。有什么办法吗?
【问题讨论】:
我需要自定义 eclipse setter 模板来返回这个对象,像这样
public Person setName(String name){
this.name=name;
return this;
}
但是 Java->Code Style->Templates 只允许我自定义 setter 正文部分,而不是方法定义。有什么办法吗?
【问题讨论】:
恐怕我无法提供允许您为此修改 Eclipse 模板的解决方案,但是我可以建议您重新考虑一下您在这里做什么吗?
如果您检查JavaBeans spec,您会发现当您以这种方式定义您的方法时,它们不再是有效的属性设置器。 Setter 应该有一个void 返回类型;从长远来看,您可能会后悔创建这些非标准 bean。例如,尝试使用 java.beans.Introspector 为您的班级收集 bean 信息,您会发现找不到您的属性“setters”。
我知道能够使用以下链接调用快速初始化您的 bean 非常好:
new Person().setName("John Smith").setDateOfBirth(...).setAddress(...)
我可以建议您使用标准设置器(返回 void)作为替代方法,而是引入构建器方法,例如:
public Person withName(String name) {
this.setName(name);
return this;
}
您的快速单行构造如下所示:
new Person().withName("John Smith").withDateOfBirth(...).withAddress(...)
我发现'with'前缀也很好读。
【讨论】:
您可以使用Fast Code Eclipse Plugin 轻松完成此操作。
【讨论】:
据我所知,您所能做的就是在 Java 中编辑“Window->Preferences->Java->Code Style->Code->Setter body”模板,如下所示:
${field} = ${param};
return this;
虽然这不会自动为您设置返回类型,但 Eclipse 会为您的每个 setter 抛出一个红色波浪线,然后您可以将鼠标悬停在上面并选择“将方法返回类型更改为 'yourTypeHere'”。
【讨论】: