我正在使用JExpr.plus()
方法来形成一个String,从语法上讲它是正确的,但它有很多括号。例如:
JExpr.lit("ONE").plus(JExpr.lit("TWO")).plus(JExpr.lit("THREE"))
返回
(("ONE" + "TWO") + "THREE")
我希望它是
"ONE" + "TWO" + "THREE"
答案 0 :(得分:1)
现在看起来像codemodel你不能避免添加括号。 Plus(+)被认为是BinaryOp,它使用以下类生成其代码:
com.sun.codemodel.JOp
内:
static private class BinaryOp extends JExpressionImpl {
String op;
JExpression left;
JGenerable right;
BinaryOp(String op, JExpression left, JGenerable right) {
this.left = left;
this.op = op;
this.right = right;
}
public void generate(JFormatter f) {
f.p('(').g(left).p(op).g(right).p(')');
}
}
注意f.p('(')
和.p(')')
。括号的添加被包含在代码中,无法避免。话虽如此,你可以改变代码模型来做你需要的东西,因为它是开源的。就个人而言,我认为没有必要,因为括号在其他情况下是有用的。