我想使用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);
}
请注意,缺少括号。 如何强制括号出现在代码中?
答案 0 :(得分:1)
不幸的是,我无法找到预先存在的添加括号的方法。但是,你可以通过添加一个特殊的JExpression来渲染paenthesis来扩展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);