Java IntelliJ IDEA:创建无插件类型安全生成器的简单方法?

Java IntelliJ IDEA:创建无插件类型安全生成器的简单方法?,java,intellij-idea,Java,Intellij Idea,使用IntelliJ IDEA,我想创建一个POJO类,帮助我避免犯愚蠢的错误,以错误的方式获取参数 我不关心其他的IDE 我不想使用任何形式的反射(即不使用Lombok或类似形式) 我不关心JavaBean标准 我不在乎“最佳实践” 我只想创建一个类,声明一些字段,并有一种方便的方法来创建所述类,以减少在创建类时错误地获取相同类型参数的可能性 从这一点开始: public class TestObject { public String x; public String y; }

使用IntelliJ IDEA,我想创建一个POJO类,帮助我避免犯愚蠢的错误,以错误的方式获取参数

  • 我不关心其他的IDE
  • 我不想使用任何形式的反射(即不使用Lombok或类似形式)
  • 我不关心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();
我不介意是否有一个单独的构建器类(更喜欢阻塞原始类上的所有方法,但没有什么大不了的)

我不介意它沿途复制很多份。如果整个过程只创建一个实例,则更可取,如下面的解决方案;但是,如果解决方案采用每个setter字段一个不可变的实例的方法——没有什么大不了的


以下是我目前为实现这一目标所做的工作

(1)使用IDEA生成构造函数,选择所有字段,结果如下:

public class TestObject {
  public String x;
  public String y;

  public TestObject(String x, String y) {
    this.x = x;
    this.y = y;
  }
}
(2)
使用生成器重构构造函数
,必须选择
使用现有的
,然后将
测试对象
名称复制/粘贴到字段中,因为为什么不这样做,导致:

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)手动删除构造函数(因为它的存在拒绝使用默认的构造函数)并删除createTestObject()方法(因为它是多余的,Java免费为我提供了一个克隆方法)。给我留下这个小小的美丽,这是我首先想要的:

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,有没有一种方法可以用更少的pfaffing来实现这一点

另一件事,我想能够做的是添加字段少pfaffing关于。目前,当我添加一个字段时,我正在手动修改结果,使其与其他设置器保持一致。有更好的方法吗?

是的,这是可能的

  • 按Alt Insert(或“代码”->“生成”)打开“生成”菜单
  • 选择Setter
  • 在下一个窗口中,在名为“模板”的顶部下拉菜单中选择“Builder”(默认情况下,此处为“intellij default”)
    你会得到与你想要的完全相同的结果

    您正在寻找构建器模式。@Stultuske-是的,但是如何使用IDEA自动生成代码,最好是不使用插件?请从google查看自动值。@ThorbjørnRavnAndersen-这是一个非常有趣的方法。我更喜欢Amseger的答案,但仍然很有趣。我相信“自动生成附加代码”是编译器的责任,而不是IDE.ZOMG-这正是我想要的,谢谢(现在还不能接受,但我会的)。