JEXL3 - 无法在JexlArithemtic中覆盖bitwiseXor?

时间:2017-12-23 13:53:04

标签: java kotlin jexl

我使用JEXL3将用户输入转换为字符串转换为数学函数,我想将^用作Math.pow(),所以我读到有关将JexlArithemtic扩展为覆盖bitwiseXor的问题像这里:http://apache-commons.680414.n4.nabble.com/JEXL-Evaluating-math-expression-td4112606.html

这个例子适用于Jexl2,如果我试图覆盖:

,我使用Jexl3
class JexlArithmeticWithPow(lenient: Boolean) : JexlArithmetic(lenient) {

    override fun bitwiseXor(left: Any, right: Any): Any { //bitwiseXor is final and cannot be overriden
        val l = toDouble(left)
        val r = toDouble(right)
        return Math.pow(l, r)
    }

}

是否有另一种可能性将^转换为Math.pow而不是bitwiseXor

1 个答案:

答案 0 :(得分:0)

在JEXL3中,不推荐使用JexlArithmetic方法bitwiseXor(并使其成为最终版);替换方法是public Object xor(Object left, Object right);。 请注意,对于JEXL3,您可能只想为数字的方法添加重载,即public Object xor(Number left, Number right);