私は、モデルの一覧が表示されます。モデルの数が大きくなる可能性があります。このモデルは、プロパティの束を持っており、それらのいずれかが考えられnullを潜在的に。
私はそれの性質のもと、すべてのモデルのための文字列を構築する必要があります。場合プロパティ== nullがその後、私のような結果文字列にいくつかの静的な部分を追加し、「プロパティ1がヌルです」。
それ以外の場合は財産!= nullを、私はこのような何かを追加し、「プロパティ1 == 『valueOfThePropertyHere』」。
結果文字列は次のようになります。 prop1 == 'value1' and prop2 is null and prop3 == 'value3' and prop4 == 'value4' and prop5 is null and ..... propN == 'valueN'
そして私は、リストからすべてのモデルのために、このような文字列を生成します。
もちろん、私は、forループでこれを行うと、私はこのためのStringBuilderを使用しています。事はしていることであるアペンドのStringBuilder Iの方法三項演算子を使用して、ヌルためのモデルのすべてのフィールドをチェックし、これに基づいて、私は結果の文字列には、このチェックの結果を追加します。プロパティがnullでない場合しかし、その後、私は、それ自体がいくつかのより多くの静的なものを+フィールドのいくつかの静的な部分+値を追加する必要があります。そして、私は私が持っているすべてのプロパティのための1つ以上のStringBuilderを追加する必要があることを意味しています。それとも私はとにかくのStringBuilderに変換し、私の知る限りでは、それはStringBuilderの内側に「+」を使用して悪い習慣だされる「+」を使用することができます(私はとにかくそれを使用する必要があります)。
例:
List<Model> models = repository.getModels();
for (Model m: models) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder
.append(m.getField1() == null ? "field1 is null" : "field1 == '" + new StringBuiler().append(m.getField1()).append("'").append(" and ").toString()))
.append(m.getField2() == null ? "field2 is null" : "field2 == '" + new StringBuiler().append(m.getField2()).append("'").append(" and ").toString()))
...............
.append(m.getFieldN() == null ? "fieldN is null" : "fieldN == '" + new StringBuiler().append(m.getFieldN()).append("'").append(" and ").toString()));
System.out.println(stringBuilder.toString());
}
モデルのリストから、すべてのモデルのために、私はStringBuilderの別の束を作成するため、パフォーマンスの観点から、私の意見では、それはとてもよく見えないだけで、結果の文字列を取得するには、ヒープ内のオブジェクト。
私何か不足していますか?パフォーマンスの観点から、そうするより良い方法はありますか?私は今のところ、他のオプションが表示されていないため、またはそれは大丈夫です。
シンプルなのために行きます。
の代わりに
stringBuilder
.append(m.getField1() == null ? "field1 is null" : "field1 == '" + new StringBuiler().append(m.getField1()).append("'").append(" and ").toString()))
使用する:
if (m.getField1() == null) {
stringBuilder.append("field1 is null");
} else {
stringBuilder.append("field1 == '").append(m.getField1()).append("'").append(" and ");
}
別に使用しての明確な奇数判定からStringBuilder
内側StringBuilder.append
(と理由だけで使用しないでコール+
...とにかく)、それがどこ解析するのは本当に難しい:
条件式です。ラインにそれを破ることは非常に簡単です。
あなた自身が、このコードパターンをたくさん繰り返すこと見つけた場合、メソッドを定義します。
void append(StringBuilder stringBuilder, String name, Object value) {
stringBuilder.append(name);
if (value == null) {
stringBuilder.append(" is null");
} else {
stringBuilder.append(" == '").append(value).append("'").append(" and ");
}
}
その後、のように呼び出します。
append(stringBuilder, "field1", m.getField1());
append(stringBuilder, "field2", m.getField2());
append(stringBuilder, "field3", m.getField3());