生成在Eclipse中返回self的setter

ver*_*tti 22 java eclipse code-generation pojo

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

myPojo.setX(x).setY(y);
Run Code Online (Sandbox Code Playgroud)

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

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

paw*_*que 7

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

public ${enclosing_type} setName(${argType} name) {
    this.name = name;
    return this;
}
Run Code Online (Sandbox Code Playgroud)

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

  • +1,但不幸的是,这不会影响"源/生成吸气剂和制定者" (6认同)

Ale*_*exR 7

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

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

${field} = ${param};
return this;
Run Code Online (Sandbox Code Playgroud)

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

public void setMyField(String myField) {
    this.myField = myField;
    return this;
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 它并没有解决真正的问题.以同样的方式,我可以回答使用Emacs而不是Eclipse,但它也无法解决问题. (6认同)
  • 它确实回答了最初编写的问题。此后,问题已经改变。 (2认同)

Kep*_*pil 5

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

  • 我认为这个项目已经死了 (2认同)