Java IntelliJ IDEA:创建无插件类型安全生成器的简单方法?
使用IntelliJ IDEA,我想创建一个POJO类,帮助我避免犯愚蠢的错误,以错误的方式获取参数Java IntelliJ IDEA:创建无插件类型安全生成器的简单方法?,java,intellij-idea,Java,Intellij Idea,使用IntelliJ IDEA,我想创建一个POJO类,帮助我避免犯愚蠢的错误,以错误的方式获取参数 我不关心其他的IDE 我不想使用任何形式的反射(即不使用Lombok或类似形式) 我不关心JavaBean标准 我不在乎“最佳实践” 我只想创建一个类,声明一些字段,并有一种方便的方法来创建所述类,以减少在创建类时错误地获取相同类型参数的可能性 从这一点开始: public class TestObject { public String x; public String y; }
- 我不关心其他的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关于。目前,当我添加一个字段时,我正在手动修改结果,使其与其他设置器保持一致。有更好的方法吗?是的,这是可能的
你会得到与你想要的完全相同的结果 您正在寻找构建器模式。@Stultuske-是的,但是如何使用IDEA自动生成代码,最好是不使用插件?请从google查看自动值。@ThorbjørnRavnAndersen-这是一个非常有趣的方法。我更喜欢Amseger的答案,但仍然很有趣。我相信“自动生成附加代码”是编译器的责任,而不是IDE.ZOMG-这正是我想要的,谢谢(现在还不能接受,但我会的)。