Я хочу создать очень распространенный код, используя 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);
}
Обратите внимание, что скобки отсутствуют. Как заставить скобки появляться в коде?
К сожалению, я не смог найти существующий способ добавления скобок. Тем не менее, вы можете расширить 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);
for (;;) { String sbt = reader.readLine(); if (sbt == null) break; ... }
возможно в CodeModel. Нет никаких оснований предпочесть этот шаблон, как лучший стиль, наоборот.