1

我正在使用JExpr.plus()方法来形成一个字符串,在语法上它是正确的,但它有很多括号。例如:

JExpr.lit("ONE").plus(JExpr.lit("TWO")).plus(JExpr.lit("THREE"))

返回

(("ONE" + "TWO") + "THREE")

我希望它是

"ONE" + "TWO" + "THREE"
4

1 回答 1

1

看起来现在使用 codemodel 你无法避免添加括号。加号 (+) 被认为是一个 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(')')。括号的添加已包含在代码中,无法避免。话虽如此,您可以更改 codemodel 来做您需要的事情,因为它是开源的。就个人而言,我不认为有必要,因为括号在其他情况下很有用。

于 2013-04-11T21:20:24.090 回答