2016-08-10 2 views
0

Ich arbeite an einem Plugin zum Erstellen von toString-Anweisungen in meinem Projekt mit CodeModel.JExpression add String Wert als Eigenschaft in einer if-Anweisung

Der resultierende Code soll wie folgt aussehen:

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

(wie im obigen Code ist eine einfache String)

Ich mag Codemodel verwenden, um automatisch neue Linien und Registerkarten im if-Anweisungen zu erzeugen und haben zu diesem Ausgang bisher stand auf:

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

Das Problem ist, die Zitate die Variable Umgebung, die es gibt, wie ich einen JExpression wörtlichen Wert für th zuweisen Der variable Wert. Die aktuelle Implementierung sieht wie folgt aus:

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())); ...} 

Ist jemand bewusst, wie dies mit JExpression oder irgendetwas anderes von Codemodel getan werden könnte? Die einzige Alternative, die ich bisher habe, ist es mit einem directStatement zu tun, wie folgt:

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

Antwort

0

Die Lösung ist die JConditional nullCheck mit dem folgenden ersetzen:

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

JExpr.direct (property) anstelle von .lit ergibt in dieser JConditional Variable statt "Variable".

Verwandte Themen