为了账号安全,请及时绑定邮箱和手机立即绑定

IntelliJ IDEA:创建没有插件的类型安全构建器的简单方法?

IntelliJ IDEA:创建没有插件的类型安全构建器的简单方法?

白衣染霜花 2022-05-21 19:50:12
使用 IntelliJ IDEA,我想创建一个 POJO 类,以帮助我避免以错误的方式获取参数方面的愚蠢错误。我不关心其他 IDE我不想使用任何形式的反射(即没有龙目岛或类似的)我不关心 JavaBean 标准我不在乎“最佳实践”我只想创建一个类,声明一些字段并有一种方便的方法来创建所述类,以减少在创建类时以错误方式获取相同类型参数的可能性。从此开始:public class TestObject {  public String x;  public String y; }我想生成一些我可以使用的东西,像这样:TestObject o = new TestObject().setX("x").setY("y");或这个:TestObject o = TestObjectBuilder.withX("x").withY("y").build();我不介意是否有一个单独的构建器类(更喜欢在原始类中使用所有方法,但没什么大不了的)。我不介意它是否会沿途制作很多副本。如果整个过程只创建一个实例,就像我下面的解决方案一样;但是,如果解决方案采用不可变的 instance-per-setter-field 方法 - 没什么大不了的。这是我目前为实现这一目标所做的工作。(1)使用 IDEA Generate constructor,选择所有字段,结果如下:public class TestObject {  public String x;  public String y;  public TestObject(String x, String y) {    this.x = x;    this.y = y;  }}(2) Refactor Constructor with Builder,必须选择Use existing,然后将名称复制/粘贴TestObject到字段中,因为为什么不这样做,导致:public class TestObject {  public String x;  public String y;  public TestObject(String x, String y) {    this.x = x;    this.y = y;  }  public TestObject setX(String x) {    this.x = x;    return this;  }  public TestObject setY(String y) {    this.y = y;    return this;  }  public TestObject createTestObject() {    return new TestObject(x, y);  }}(3)手动删除构造函数(因为它的存在拒绝使用默认的ctor)并删除createTestObject()方法(因为是多余的,Java免费给了我一个clone方法)。留给我这个小美女,这是我一开始想要的:public class TestObject {  public String x;  public String y;  public TestObject setX(String x) {    this.x = x;    return this;  }  public TestObject setY(String y) {    this.y = y;    return this;  }}怎么样,Obi-wan Stack-overflow,有没有办法减少吹嘘?我希望能够做的另一件事是添加更少花哨的字段。目前,当我添加一个字段时,我正在generate setter手动修改结果以与其他设置器保持一致 - 有没有更好的方法来做到这一点?
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

是的,这是可能的。

  1. 按 Alt-Insert(或“代码”->“生成”)打开“生成”菜单

  2. 选择二传手。

  3. 在下一个窗口中,在名为“Template”的顶部下拉菜单中选择“Builder”(默认情况下它是“intellij Default”)。

您将获得与您想要的完全相同的结果。


查看完整回答
反对 回复 2022-05-21
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信