使用 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个赞
是的,这是可能的。
按 Alt-Insert(或“代码”->“生成”)打开“生成”菜单
选择二传手。
在下一个窗口中,在名为“Template”的顶部下拉菜单中选择“Builder”(默认情况下它是“intellij Default”)。
您将获得与您想要的完全相同的结果。
添加回答
举报
0/150
提交
取消