有没有一种方法可以使用自动构建器来为Eclipse
中的类创建构建器(Joshua Bloch的Builder模式)?例如菜单中的选项、插件或其他内容。我在"重构
"下没有找到任何东西。
有没有一种方法可以使用自动构建器来为Eclipse
中的类创建构建器(Joshua Bloch的Builder模式)?例如菜单中的选项、插件或其他内容。我在"重构
"下没有找到任何东西。
你可能想查看 Lombok 注解来生成没有样板代码的构造器。例如:
@Builder
public class MyPojo {
private String name;
}
MyPojoBuilder.builder().name("yourame").build();
但是这个方法好像不能用于抽象类。
@Builder
注释仍然(截至2017年4月)不能用于由父类提供的成员(如Jaco所述)。 - 8bitjunkie也许我来晚了。
Eclipse本身没有提供一种生成支持构建器模式的代码的方法。但是可以通过插件扩展其功能。
有一个插件我使用过:
https://github.com/henningjensen/bpep
编辑:5年后重新访问这个话题,我建议使用已成为行业标准并且IDE不可知的 lombok ==> 如果您的团队成员使用各种IDE,则会起作用。 请查看此注释。 您还可以在类之间包括模式继承。
@Builder(toBuilder = true)
// or you could use this for inheritance
@SuperBuilder
Eclipse Neon.2 Release (4.6.2)
上使用了这个插件,它可以正常工作。此外,这个插件有一个优点,就是不需要注释。 - hasanghaforian我目前使用的是Eclipse Neon.1a Release(4.6.1)和Spark Builder Generator,它运行良好。
您可以在以下位置设置首选项:
窗口> 首选项> Java> Spark Builder Generator
试试看 https://github.com/vojtek/write-it-once
package ${cls.package.name};
public class ${cls.shortName}Builder {
public static ${cls.name}Builder builder() {
return new ${cls.name}Builder();
}
<% for(field in cls.fields) {%>
private ${field.type.name} ${field.name};
<% } %>
<% for(field in cls.fields) {%>
public ${cls.name}Builder ${field.name}(${field.type.name} ${field.name}) {
this.${field.name} = ${field.name};
return this;
}
<% } %>
public ${cls.name} build() {
final ${cls.name} data = new ${cls.name}();
<% for(field in cls.fields) {%>
data.${field.setter.name}(this.${field.name});
<% } %>
return data;
}
}