![](/img/trans.png)
[英]How do I remove unnecessary brackets using CodeModel's JExpr.plus method?
[英]How do I force-enclose a CodeModel expression in brackets?
我想使用Sun的CodeModel生成一些非常常見的代碼
while ((sbt = reader.readLine()) != null)
{
}
但是當我寫:
JWhileLoop whileJsonBuilder = block._while(JExpr
.ref("partJsonString").assign(JExpr.ref("reader"))
.ne(JExpr._null()));
我懂了
while (partJsonString = reader!= null) {
stringBuilder.append(partJsonString);
}
請注意,缺少括號。 如何強迫方括號出現在代碼中?
不幸的是,我找不到添加括號的既有方法。 但是,您可以通過添加特殊的JExpression來呈現寄生狀態,從而擴展JCodeModel來處理此問題:
public class ParensExpession extends JExpressionImpl{
private JExpression expression;
public ParensExpession(JExpression expression) {
this.expression = expression;
}
@Override
public void generate(JFormatter formatter) {
formatter.p('(').g(expression).p(')');
}
}
合並到您的代碼中:
JWhileLoop whileJsonBuilder = block._while(
new ParensExpession(
JExpr.ref("partJsonString").assign(JExpr.ref("reader"))
).ne(JExpr._null()));
得到:
while ((partJsonString = reader)!= null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.