类似于重复的问题,我想你可以这样做:
public class ExtendedJexlArithmetic extends JexlArithmetic
{
public Object propertyGet(YourCustomClass left, YourCustomClass right)
{
// ...
}
}
JexlEngine jexlEngine=new JexlBuilder().arithmetic(new ExtendedJexlArithmetic (true)).create();
// or
JexlEngine jexl = new JexlEngine(null, new ExtendedJexlArithmetic(), null, null);
来自文档:https ://commons.apache.org/proper/commons-jexl/apidocs/org/apache/commons/jexl3/package-summary.html
您还可以添加方法来重载属性 getter 和 setter 运算符行为。名为 propertyGet/propertySet/arrayGet/arraySet 的 JexlArithmetic 实例的公共方法是潜在的覆盖,将在适当的时候调用。下表概述了句法形式和调用方法之间的关系,其中 V 是属性值类,O 是对象类,P 是属性标识符类(通常是 String 或 Integer)。
Expression Method Template
foo.property public V propertyGet(O obj, P property);
foo.property = value public V propertySet(O obj, P property, V value);
foo[property] public V arrayGet(O obj, P property, V value);
foo[property] = value public V arraySet(O obj, P property, V value);