2016-08-10 5 views
0

CodeModelを使用して、プロジェクトでtoString文を作成するためのプラグインに取り組んでいます。JExpression if文の文字列値をプロパティとして追加します

結果のコードは次のようになります。

if (variable == null) { 
    out.append(" " + "variable = null").append("\n"); 
} 

(上記のコードでは外に簡単なのStringBuilderである)

を、私は自動的にif文で改行やタブを生成するCodeModelを使用したいです、そしてこれまでのところ、この出力までを持っている:私は目のためにJExpressionリテラル値を割り当てるよう

if ("variable" == null) { 
    out.append(" " + "variable = null").append("\n"); 
} 

問題がある変数を、周囲の引用符で変数値。現在の実装は次のようになります。

private void printComplexObject(final JMethod toStringMethod, FieldOutline fo) { 
     String property = fo.getPropertyInfo().getName(false); 
     property = property.replace("\"", ""); 

     JType type = fo.getRawType(); 
     JBlock block = toStringMethod.body(); 
     JConditional nullCheck = block._if(JExpr.lit(property).eq(JExpr._null())); ...} 

が、これはJExpressionまたはCodeModelから何かを使用して行うことができる方法を知って誰ですか?私が持っている唯一の選択肢は、これまでのところ、次のようにdirectStatementでそれを行うことです。

toStringMethod.body().directStatement("if (" + property + " == null) { out.append ...}"); 

答えて

0

ソリューションは、以下でJConditional nullCheckを交換することである。

JConditional nullCheck = block._if(JExpr.direct(property).eq(JExpr._null()));

JExpr.direct(プロパティ).litの代わりに、このJConditionalで "変数"の代わりに変数が使用されます。

関連する問題