我使用JEXL3将用户输入转换为字符串转换为数学函数,我想将^
用作Math.pow()
,所以我读到有关将JexlArithemtic
扩展为覆盖bitwiseXor
的问题像这里:http://apache-commons.680414.n4.nabble.com/JEXL-Evaluating-math-expression-td4112606.html
这个例子适用于Jexl2,如果我试图覆盖:
,我使用Jexl3class 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
?
答案 0 :(得分:0)
在JEXL3中,不推荐使用JexlArithmetic方法bitwiseXor(并使其成为最终版);替换方法是public Object xor(Object left, Object right);
。
请注意,对于JEXL3,您可能只想为数字的方法添加重载,即public Object xor(Number left, Number right);
。