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();
別のビルダーのクラスがあります場合、私は気にしない(ジャムにすべての元のクラスのメソッド、ない大物を好みます)。
それが道に沿って多くのコピーを行う場合、私は気にしません。全体のプロセスは、以下の私の解決策のように、1つだけのインスタンスを作成する場合好みます。ノー大物 - しかし、場合解決策は不変インスタンスあたりのセッターフィールドアプローチを採用しています。
ここで私は現在、この目標を達成するために行うものです。
(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の使用を拒否するため)を手動では、コンストラクタを削除し、(それは余分なので、Javaは無料で私にcloneメソッドを提供します)createTestObject()メソッドを削除します。私は最初の場所で望んだすべてであるこの小さな美しさ、と私を残し:
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;
}
}
どのようにそれについて、オビ=ワン・スタック・オーバーフローは、およそ以下pfaffingでこれを行う方法はありますか?
私が行うことができるようにしたいのですがもう一つは、より少ない程度pfaffingと追加フィールドです。現時点では、私は私がやっているフィールドを追加する場合generate setter
、他のセッターに沿ったものであることを手で結果を修正する-それを行うには良い方法はありますか?
はい、それは可能です。
- Alt-Insertキーを押す(または「コード」 - >「生成」)メニューの「生成」オープンします
- セッターを選択します。
- 次のウィンドウで(デフォルトでは「IntelliJのデフォルト」があります)、「テンプレート」と呼ばれるトップドロップダウンメニューに「ビルダー」を選択します。
あなたがしたいことを正確に同じ結果を得るでしょう。