if-elseステートメントを三項演算子にリファクタリングします。 Codemodelと三項演算子を作成するJBlock(JMethod本体)にJExpression(JOp.cond())を追加します。
if ((variable) == null) { ... do something } else { ... do something else }
JOp.cond(のように、非常に簡単です)、私たちは三元の文を返すために、条件にifTrueとifFalseパラメータを渡すことができます。
私の問題は、メソッド本体(JBlock)にJExpressionを追加することである:
private void printSomeObject(final JMethod toStringMethod, FieldOutline fo) {
String property = fo.getPropertyInfo().getName(false);
JBlock block = toStringMethod.body();
JExpression cond = JExpr.direct(property).eq(JExpr._null());
JExpression ifTrue = JExpr.direct("... do something");
JExpression ifFalse = JExpr.direct("... do something else");
JExpression ternary = JOp.cond(cond, ifTrue, ifFalse);
// toStringMethod.body().add(generateBody(ternary)); ONLY WORKS WITH JSTATEMENT
...
}
は誰JBlockにJExpressionを追加する方法についてのアイデアを持って?
たとえば、StringBuilderを使用してtoString出力を生成し、戻り値を変数として格納する必要がない次の文が必要だった場合は可能ですか? 'stringbuilder.append(1 == 1" true ":" false ")' – coderwurst
JOpを式に格納し、それを最初のif式の_thenブロックに追加することで、可能です - 今後これをしたいと思っている人のために、これを以下の返信として追加します – coderwurst