生成在Eclipse中返回self的setter

我想要我的定制者,以便我可以将它们链接起来:

myPojo.setX(x).setY(y); 

通常我使用Eclipse生成setter但不幸的是,setter的code template允许我只更改setter的主体,而不是签名。

什么是最简单的方法来完成上述? 除了搜索和替换+手动编辑? 🙂

我可以提供一种补丁,但不需要任何额外的安装。

转到窗口/首选项/ Java /代码样式/代码模板。 编辑“setter body”模板如下:

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

现在当你运行“生成getter和setter”时,它将创建如下的setter:

 public void setMyField(String myField) { this.myField = myField; return this; } 

这显然会导致编译错误,因为方法类型为void 。 但是你可以Ctrl-F并用public YourClassName set替换所有’public void set’。

这是一个补丁,但它的工作原理……

您可以使用编辑器/模板来实现此目的。 要定义新模板,请打开“首选项”窗口,然后打开Java->编辑器 – >模板。 在此窗口中,您可以定义新模板并为其命名。 例如:

 public ${enclosing_type} setName(${argType} name) { this.name = name; return this; } 

给它起个名字,比如settr。 然后,您可以在java代码中使用此模板,方法是键入“settr”,然后键入Ctrl-Space。

您可以使用fluent-builders-generator插件以您希望的方式生成setter。

Notepad ++解决方案:

数据:

 JavaType variableName; 

搜索正则表达式:

 (.*) (.*); 

替换正则表达式

 public JavaType with\2\(\1 p\2\) { this.\2 = p\2; return this; } 

您必须手动更正方法名称,因为它不会大写变量名的第一个字母。

我在这个模板中使用withField命名模式

 public ${enclosing_type} with${Field}(${argType} ${param}) { set${Field}(${param}); return this; } 

我认为它的灵感来自@paweloque当时的回答 。 唯一的区别是添加了{$ Field}和$ {param},它们用于命名方法和参数,并在方法体中调用eclipse生成的真实setter。

模板的优点在于,您可以在填写模板变量时使用自动完成和一些选项卡创建方法。

结果是这样的:

 public Foo withBar(String bar) { setBar(bar); return this; } 

这是一个在eclipse中设置的屏幕截图:

在此处输入图像描述