Как принудительно заключить выражение CodeModel в скобки?
Я хочу сгенерировать очень распространенный код с использованием Sun's 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);
}
Обратите внимание, что скобки отсутствуют. Как я могу заставить скобки появляться в коде?
1 ответ
Решение
К сожалению, мне не удалось найти существующий способ добавить скобки. Однако вы можете расширить JCodeModel, чтобы обработать это, добавив специальное JExpression для рендеринга параэнтеза:
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);